O Tomcat não reconhece a biblioteca .jar do MySQL

2

Eu tentei várias maneiras diferentes, tais que o Tomcat carrega os drivers do MySQL ao executar meu aplicativo da web. Estou usando o Ubuntu 8.04 e as bibliotecas vêm do pacote libmysql-java. Eles estão localizados no diretório mostrado abaixo:

~$ ls /usr/share/java/mysql*
/usr/share/java/mysql-connector-java-5.1.5.jar

Meu CLASSPATH inclui este arquivo:

~$ echo $CLASSPATH
.:/usr/lib/jvm/java-6-sun/bin:/usr/local/tomcat/lib/servlet-api.jar:/usr/share/java/mysql-connector-java-5.1.5.jar

Até coloquei uma cópia do arquivo .jar no meu diretório WEB-INF / lib / no meu aplicativo da web:

/usr/local/tomcat/webapps/ohms/WEB-INF/lib$ ls
mysql-connector-java-5.1.5.jar

Depois de fazer essas alterações, reinicio o Tomcat, recompino minhas classes, reinicio o Tomcat novamente. Além disso, estou importando as bibliotecas necessárias usando import java.sql.*;

No entanto, ainda estou recebendo o erro java.lang.ClassNotFoundException: com.mysql.jdbc.Driver quando ele executa a linha Class.forName("com.mysql.jdbc.Driver").newInstance();

O que estou fazendo de errado aqui?

    
por Murat Ayfer 23.10.2009 / 00:14

2 respostas

4

O Tomcat não usa o CLASSPATH no carregador de classe do aplicativo da web. Você pode adicionar caminhos e arquivos à linha common.loader em conf/catalina.properties . O classloader deveria ter encontrado a classe quando o jar estava em WEB-INF / lib. Eu não posso explicar porque não tem. Se você estiver usando 5.5, você pode colocar o jar em comum / lib ou lib / se você estiver usando tomcat6. Esse caminho é carregado por um carregador de classes de nível superior e deve ser escolhido primeiro.

    
por 23.10.2009 / 00:41
0

É o seu aplicativo que está lançando a exceção ou é o próprio Tomcat?

Como você está usando Class.forName (), estou supondo que você também não esteja fazendo uma configuração de JNDI no Tomcat, mas vou lançar essa possibilidade de qualquer maneira. Para o JNDI, o Tomcat também precisa ver o driver e não pode ver os JARs que você coloca no diretório WEB-INF / lib do seu aplicativo. Se você colocar seu driver no diretório comum de libras do Tomcat, o Tomcat poderá vê-lo e seu aplicativo também poderá vê-lo. Os diretórios são os que David menciona.

    
por 28.10.2009 / 09:28