Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

.jar não encontra as bibliotecas

Pessoal, ao criar o .jar pelo Eclipse de um aplicativo simples de cadastro de alunos, no momento de executá-lo ele não consegue localizar as bibliotecas utilizadas no projeto. Entretanto, na hora de criar o .jar eu seleciono a opção de incluí-las dentro do próprio .jar. Como resolver este problema?

6 respostas

Olá Daniel,

Verifique a variável de ambiente CLASS_PATH, ou tente roda o programa com java -cp. Veja também se a versão do java da máquina de destino é a mesma da sua máquina de desenvolvimento (no caso de você estar distribuindo o seu programa)

Olá Sandro,

Primeiramente, muito obrigado pelas considerações! Eu gerei o .jar e verifiquei no manifest que as bibliotecas estão sendo referenciadas corretamente, na realidade meu problema é outro. Como estou utilizando o banco de dados hsqldb preciso inicializar o driver para fazer a conexão com o banco, para isto eu fiz um arquivo .bat com a instrução. Quando rodo pelo Eclipse tudo certo! Mas quando rodo pelo .jar gerado está falhando!!! Tem alguma sugestão?

Daniel,

O hsqldb pode ser rodado em modo servidor (como feito no curso) e em modo cliente apenas. A diferença é a forma de execução do mesmo. O modo servidor é como o curso apresenta, em que temos um prompt de comando aberto o tempo todo executando o servidor. O outro modo, você apenas cria o banco de dados e depois usa o gerenciador dele para criar as tabelas e campos, e posteriormente o seu programa acessa o mesmo. Na documentação do hsqldb encontrei esse código:

try {
     Class.forName("org.hsqldb.jdbc.JDBCDriver" );
 } catch (Exception e) {
     System.err.println("ERROR: failed to load HSQLDB JDBC driver.");
     e.printStackTrace();
     return;
 }

 Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/xdb", "SA", "");

Mas se não está rodando em modo servidor, a string de conexão deve ser algo do tipo: "jdbc:hsqldb:file:/Pasta/banco"

Verifique também se o hsqldb.jar está incluído no seu CLASS_PATH.

Sandro, Como não consegui resolver a situação, comecei a utilizar o MySql e utilizar o JPA com Hibernate para persistir os dados. Só para minha surpresa o jar exportado também não funciona! Todas as bibliotecas estão no jar, o MANIFEST.MF e o persistence.xml! Mas quando tento gerar uma tabela, por exemplo, tenho o erro: unable to locate persistence units.

Xiii....não saco nada de Hibernate...na verdade não sou fã de frameworks de persistência, nem no java nem no vb.net. Acho que complicam mais do que ajudam, mas isso é preferência pessoal. Por acaso você tem mais de uma versão do java instalado na sua máquina? O java ao contrário do .NET é meio ciumento com suas versões anteriores, e normalmente dá pau.

solução!

Sandro, com o JPA e o Hibernate o problema foi resolvido! Eu salvei as bibliotecas em uma pasta separada e funcionou! Valeu!