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’.
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.
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):
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 7 in the jsp file: /directConnect.jsp
Generated servlet error:
[javac] Compiling 1 source file
D:\Luiz-Felipe\Java\Sfw-rsc\apache-tomcat-4.1.34\work\Standalone\localhost\test\directConnect_jsp.java:47: cannot resolve symbol
symbol : class OracleDataSource
location: class org.apache.jsp.directConnect_jsp
OracleDataSource ods;
^
An error occurred at line: 7 in the jsp file: /directConnect.jsp
Generated servlet error:
D:\Luiz-Felipe\Java\Sfw-rsc\apache-tomcat-4.1.34\work\Standalone\localhost\test\directConnect_jsp.java:52: cannot resolve symbol
symbol : class OracleDataSource
location: class org.apache.jsp.directConnect_jsp
ods = new OracleDataSource();
^
2 errors
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?
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:
<%@page language="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>
<%
Connection con;
Statement stm;
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 (Exception e)
{
out.println("Não foi possível conectar ao banco. Exeção: " + e.getMessage());
}
%>
</body>
</html>
[quote=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…
[/quote]
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.
[quote]
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?[/quote]
[quote=bellijava]Tenta descompacta-lo. Talvez o jar esteja dentro dele.
Tudo que vc aponta no classpath deve ser jar, não zip[/quote]
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).
: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().
[quote=Guilherme Silveira][quote=oyama]
:arrow: Você sabe o que é stacktrace? Acho que não. Então mude o seu JSP e coloque e.printStackTrace().[/quote]
A exception que imprime o nome da classe como toString (getMessage) é o ClassNotFoundException.[/quote]
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.
[quote=oyama][quote=Guilherme Silveira][quote=oyama]
:arrow: Você sabe o que é stacktrace? Acho que não. Então mude o seu JSP e coloque e.printStackTrace().[/quote]
A exception que imprime o nome da classe como toString (getMessage) é o ClassNotFoundException.[/quote]
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.[/quote]
O pior é o nullpointerexception não? “null”…
E o 1/0?
O pessoal economizou nas mensagens de erro…