Rocks 6.1.1 + PostgreSQL + JDBC connection [RESOLVIDO]

1. Rocks 6.1.1 + PostgreSQL + JDBC connection [RESOLVIDO]

Luciana
lumascampos

(usa CentOS)

Enviado em 25/11/2014 - 15:38h

Estou com problemas para configurar uma conexão JDBC no Rocks 6.1.1.
Consigo conectar no banco com 'psql', mas ao tentar conectar através da conexão JDBC ocorre o erro:


Exception in thread "main"
java.lang.NoClassDefFoundError: org/postgresql/jdbc4/Jdbc4Connection
at org.postgresql.Driver.makeConnection(Driver.java:410)
at org.postgresql.Driver.connect(Driver.java:280)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at testaconexao.TestaConexao.main(TestaConexao.java:40)
Caused by: java.lang.ClassNotFoundException: org.postgresql.jdbc4.Jdbc4Connection
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 5 more
Caused by: java.io.EOFException: Detect premature EOF
at sun.misc.Resource.getBytes(Resource.java:131)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:444)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
... 10 more

Estou usando:

JAVA J2SE

java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)


PostgreSQL

PostgreSQL 9.3.5 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120
313 (Red Hat 4.4.7-4), 64-bit


JDBC4

postgresql-9.2-1004.jdbc41.jar


O quê pode estar errado?

Agradeço qualquer dica!

Luciana.



  


2. Re: Rocks 6.1.1 + PostgreSQL + JDBC connection [RESOLVIDO]

Hugo Cerqueira
hrcerq

(usa Outra)

Enviado em 25/11/2014 - 21:11h

Olá.

Você já tentou usar um conector mais atualizado? Pode ser que o problema seja incompatibilidade do conector (na versão 9.2) com o servidor (9.3).

Você pode baixar a última versão do JDBC aqui:

http://jdbc.postgresql.org/download.html


3. Re: Rocks 6.1.1 + PostgreSQL + JDBC connection [RESOLVIDO]

Luciana
lumascampos

(usa CentOS)

Enviado em 25/11/2014 - 21:38h

Olá hrcerq,

Agradeço sua resposta.

Entretanto, já fiz várias tentativas, com as seguintes versões:



postgresql-9.3-1102.jdbc4.jar
postgresql-9.3-1102.jdbc41.jar
postgresql-9.2-1104.jdbc41.jar
postgresql-8.4-703.jdbc4.jar
postgresql-8.3-607.jdbc2.jar


Todas elas apresentam o mesmo erro.

Já fiz um teste atualizando o CLASSPATH ao executar o programa teste (java -cp [path] -jar Teste.jar), o problema persiste.

Estou estudando o código do postgresql-jdbc-9.3.1102 para entender melhor o funcionamento do driver JDBC. Não sei mais o quê fazer!

Na minha máquina Linux Ubuntu 14.04 LTS tudo funciona perfeitamente bem, com qualquer versão dos drivers citados acima.

Grata!

Luciana.



4. Re: Rocks 6.1.1 + PostgreSQL + JDBC connection [RESOLVIDO]

Hugo Cerqueira
hrcerq

(usa Outra)

Enviado em 26/11/2014 - 08:21h

Infelizmente eu não conheço muito de java, mas eu sei que o nome da classe que a aplicação deve chamar é

org.postgresql.Driver

Será que a aplicação não está chamando pelo nome errado?


5. Re: Rocks 6.1.1 + PostgreSQL + JDBC connection [RESOLVIDO]

Luciana
lumascampos

(usa CentOS)

Enviado em 26/11/2014 - 10:20h

Sim, você tem razão.

Tanto que na mensagem de erro (3a linha abaixo) a chamada da classe Jdbc4Connection é feita na linha 410 da classe Driver. (Driver.java:410)
Por isso mesmo, imaginei que o problema poderia ser da versão do Driver e insisti nos testes de versões diferentes.
Ainda assim o erro é o mesmo!


Exception in thread "main"
java.lang.NoClassDefFoundError: org/postgresql/jdbc4/Jdbc4Connection
at org.postgresql.Driver.makeConnection(Driver.java:410)
at org.postgresql.Driver.connect(Driver.java:280)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at testaconexao.TestaConexao.main(TestaConexao.java:40)
Caused by: java.lang.ClassNotFoundException: org.postgresql.jdbc4.Jdbc4Connection
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 5 more
Caused by: java.io.EOFException: Detect premature EOF
at sun.misc.Resource.getBytes(Resource.java:131)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:444)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
... 10 more


Vou tentar as orientações do documento abaixo (seção 6.2.1). Se der certo, vou postar aqui.

https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6.1/pdf/Administ...

Valeu!


6. Re: Rocks 6.1.1 + PostgreSQL + JDBC connection [RESOLVIDO]

Buckminster
buckminster

(usa Debian)

Enviado em 26/11/2014 - 12:44h

Para a tua versão da JVM 1.7.0_51 com o PostgreSQL 9.3.5 o driver certo é o postgresql-9.3-1102.jdbc41.jar.

Confira aqui:
http://jdbc.postgresql.org/download.html

Como tu estás fazendo a conexão...? Posta aqui.


7. Re: Rocks 6.1.1 + PostgreSQL + JDBC connection [RESOLVIDO]

Luciana
lumascampos

(usa CentOS)

Enviado em 26/11/2014 - 13:19h

Ok buckminster,

Apesar de já ter feito esse teste, o repeti novamente.

Infelizmente, o erro persiste.

Segue abaixo o código de teste "TestaConexao" (substituí - apenas para postar aqui - o endereço IP do meu servidor por 999.999.999.999):

Vale lembrar que esse mesmo código funciona corretamente no Linux Ubuntu 14.04 LTS e a saída é:


run:
Número do experimento ==============>3
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)


A versão do meu servidor é:


Rocks 6.1.1 (Sand Boa)
Profile built 19:32 30-May-2014



package testaconexao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;


public class TestaConexao {

private static Connection con;
private static ResultSet rs;
private static ResultSetMetaData rsmd;
private static Statement stm;
private static int experimento;

public static void main(String[] args) {
try {
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection(
"jdbc:postgresql://999.999.999.999:5432/meubanco",
"postgres",
"postgres");
stm = (Statement) con.createStatement();
stm.executeQuery("SELECT NEXTVAL('experimento_seq')");
rs = stm.getResultSet();
rs.next();
experimento = rs.getInt(1);
System.out.println("Número do experimento ==============>"+experimento);
} catch (ClassNotFoundException | SQLException ex) {System.out.println(ex.getMessage());
Logger.getLogger(TestaConexao.class.getName()).log(Level.SEVERE, null, ex);
}
}
}


Agradeço a resposta!


8. Re: Rocks 6.1.1 + PostgreSQL + JDBC connection [RESOLVIDO]

Luciana
lumascampos

(usa CentOS)

Enviado em 27/11/2014 - 14:24h

Olá buckminster e hrcerq,

Vocês estavam certos desde o início!

Apesar de eu ter feito novo teste, eu estava passando o arquivo JDBC para o diretório LIB onde estava o meu arquivo .JAR. Entretanto, não era esse que estava sendo considerado na execução. O Java buscava o arquivo JDBC que estava em .../jre/lib/ext e esse arquivo estava desatualizado.

Ao colocar em .../jre/lib/ext o arquivo postgresql-9.3-1102.jdbc41.jar tudo funcionou muitíssimo bem!!

Muito obrigada! \o/\o/

Luciana.


9. Re: Rocks 6.1.1 + PostgreSQL + JDBC connection [RESOLVIDO]

Buckminster
buckminster

(usa Debian)

Enviado em 28/11/2014 - 00:20h

De nada.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts