Baixei o arquivo ‘classes12.zip’, que é o driver do Oracle para jdk1.3 e inferiores, coloquei o caminho para ele no classpath, mas ainda assim parece que não está funcionando.
Alguém pode dar uma luz?
Outra coisa que estranhei é que o arquivo tem extensão ‘ZIP’.
Tenta descompacta-lo. Talvez o jar esteja dentro dele.
Tudo que vc aponta no classpath deve ser jar, não zip
O
oyama
Poste o código da sua classe de conexão e qual o erro (stacktrace, please).
A Oracle tem um padrão horrivel de nome de arquivo para os seus drivers JDBC. Historicamente ela empacotava como .zip (.zip = .jar). Só recentemente ela passou a utilizar .jar para os drivers. Pode usar como .zip ou renomear para .jar.
Rage
Claro!
Vou renomear o zip para jar, para confunfir menos e porque eu prefiro o JAR, hehehe…
Posso colocar este JAR onde eu quiser, ou tem que ser dentro do diretório da minha JDK?
Meu código é o seguinte (conexão direto na página, não tô usando uma classe para conexão ainda):
Voce precisa usar DataSource? Se não for precisar, de uma lida neste tutorial
Agora se for precisar usar DataSource, não use a classe OracleDataSource
diretamente.
Rage
Oi. Bom, precisar acho que eu nao PRECISO usar não…usei porque estava no exemplo que eu peguei, rs.
Eu ja tinha feito isso antes, sem usar esse tal de OracleDataSource…
Outra coisa é que este tutorial é até legal, mas, apesar dele dizer que colocar a conexão na própria página é um pessimo hábito, é isso o que ele faz…rs…
Realmente eu prefiro fazer uma servlet com a conexão separada, usando jdbc, e depois imprimir os resultados. Sabe onde tem algum tuto sobre isso?
obrigado
Pedrosa
Rage
O problema da maioria destes tutos é que eles exemplificam usando mysql como sendo o banco usado, e na hora de usar outro, no meu caso ORACLE, baba tudo…vamos lá. Seguí os seguintes passos, mas ainda assim não consigo conectar:
Baixei o arquivo “classes12.zip”, que é o conector jdbc oracle para a jdk 1.3.
Coloquei o caminho para este arquivo no classpath
Copiei este arquivo para o diretório da jdk\jre\lib\ext
Criei a seguinte página:
<%@pagelanguage="java"import="java.io.*,java.sql.*,javax.sql.*"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>Teste de Conexão</title></head><body><%Connectioncon;Statementstm;try{Class.forName("oracle.jdbc.driver.OracleDriver");con=DriverManager.getConnection("jdbc:oracle:thin:@hostbanco:1521:nomebanco","user","password");stm=con.createStatement();out.println("Conexão efetuada com sucesso");}catch(Exceptione){out.println("Não foi possível conectar ao banco. Exeção: "+e.getMessage());}%></body></html>
ele sempre cai na exceção, e não conecta.
Alguém pode ajudar???
O
oyama
Coloque o stacktrace da exception, senão vai ser dificil saber qual o problema.
Quando coloco no classpath o caminho, tenho que colocar o caminho da jre (exemplo : minhajdk\jre\lib\ext\classes12.jar )
ou posso colocar qualquer caminho onde este arquivo se encontra?
(exemplo : felipe\java\classes12.jar )
Guilherme_Silveira
Rage:
O problema da maioria destes tutos é que eles exemplificam usando mysql como sendo o banco usado, e na hora de usar outro, no meu caso ORACLE, baba tudo…
O Pedrosa colocou o link da apostila pois tem uma seção que fala justamente sobre o problema do driver da oracle ser um arquivo .zip, vale a pena dar uma olhada…
Qual classpath? Imagino que na variável de ambiente.
Não faça isso… não faz sentido colocar jars no classpath global (explicação a seguir).
A exceção é o CLassNotFoundException. Não adianta colocar o seu .zip (ou .jar) em sua variável global pois o seu servlet conteiner (tomcat?) irá ignorá-lo em sua aplicação.
1-) Você deve colocar o seu zip no diretóri olib de sua aplicação web (WEB-INF/lib).
2-) Como disse, vale a pena dar uma olhada no exemplo da apostila, ele cita passo a passo o que fazer com o driver… seja um arquivo zip ou jar.
. Em aplicações WEB, o container não é obrigado a ler arquivos .zip, portanto renomeie seu arquivo para .jar.
Abraço
Guilherme_Silveira
Realmente eu prefiro fazer uma servlet com a conexão separada, usando jdbc, e depois imprimir os resultados. Sabe onde tem algum tuto sobre isso?
mesmo link do pedrosa, capitulo de mvc.
Guilherme_Silveira
bellijava:
Tenta descompacta-lo. Talvez o jar esteja dentro dele.
Tudo que vc aponta no classpath deve ser jar, não zip
O driver do oracle é um zip mesmo. Vale lembrar que o .jar é literalmente um .zip. Basicamente não tem nada a mais.
O java aceita o .zip sim, ele vai verificar que é um arquivo zip compactado, assim como ele faz com qualquer arquivo no classpath. O problema está em aplicações web (ou controladas por algum tipo de container, que isola a variável classpath global de sua aplicação).
O
oyama
:arrow: Você está usando o Tomcat? Como você está fazendo o deploy da aplicação?
:arrow: Quantas JDK/JRE você tem instalado nesta máquina? Qual JVM está sendo usada para rodar o Tomcat (ou o outro Servlet Container)?
:arrow: Por que você está usando JDK 1.3? Exigencia do projeto?
:arrow: Você sabe o que é stacktrace? Acho que não. Então mude o seu JSP e coloque e.printStackTrace().
Guilherme_Silveira
oyama:
:arrow: Você sabe o que é stacktrace? Acho que não. Então mude o seu JSP e coloque e.printStackTrace().
A exception que imprime o nome da classe como toString (getMessage) é o ClassNotFoundException.
O
oyama
Guilherme Silveira:
oyama:
:arrow: Você sabe o que é stacktrace? Acho que não. Então mude o seu JSP e coloque e.printStackTrace().
A exception que imprime o nome da classe como toString (getMessage) é o ClassNotFoundException.
Até dava para deduzir isto. Só queira ensinar o Rage como imprimir o stacktrace caso ocorra novos erros, pois dependendo, não vai dar para deduzir tão facilmente o erro.
Guilherme_Silveira
oyama:
Guilherme Silveira:
oyama:
:arrow: Você sabe o que é stacktrace? Acho que não. Então mude o seu JSP e coloque e.printStackTrace().
A exception que imprime o nome da classe como toString (getMessage) é o ClassNotFoundException.
Até dava para deduzir isto. Só queira ensinar o Rage como imprimir o stacktrace caso ocorra novos erros, pois dependendo, não vai dar para deduzir tão facilmente o erro.
O pior é o nullpointerexception não? “null”…
E o 1/0?
O pessoal economizou nas mensagens de erro…