Tomcat ne reconnaît pas la bibliothèque MySQL .jar

J'ai essayé plusieurs façons différentes, de sorte que Tomcat charge les pilotes MySQL lors de l'exécution de mon application Web. J'utilise Ubuntu 8.04, et les bibliothèques viennent du package libmysqljava. Ils se trouvent dans le directory ci-dessous:

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

Mon CLASSPATH comprend ce file:

 ~ $ 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

J'ai même mis une copy du file .jar dans mon directory WEB-INF / lib / dans mon application Web:

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

Après avoir effectué ces modifications, je redémarre Tomcat, composez de nouveau mes cours, redémarrez Tomcat à nouveau. En outre, import java.sql.*; bibliothèques nécessaires à l'aide d' import java.sql.*;

Cependant, je reçois toujours l'erreur java.lang.ClassNotFoundException: com.mysql.jdbc.Driver lorsqu'il exécute la ligne Class.forName("com.mysql.jdbc.Driver").newInstance();

Qu'est-ce que je fais mal ici?

Tomcat n'utilise pas CLASSPATH dans le chargeur de classs du webapp. Vous pouvez append des paths d'access et des files à la ligne common.loader dans conf/catalina.properties . Le chargeur de class aurait dû find la class lorsque le pot était dans WEB-INF / lib. Je ne peux pas expliquer pourquoi ce n'est pas le cas. Si vous utilisez 5.5, vous pouvez placer le pot en commun / lib ou lib / si vous utilisez tomcat6. Ce path d'access est chargé par un chargeur de class de niveau supérieur et devrait être récupéré en premier.

Est-ce votre application qui lance l'exception, ou est-ce Tomcat lui-même?

Comme vous utilisez Class.forName (), je suppose que vous ne faites pas non plus une configuration JNDI dans Tomcat, mais je lancerai cette possibilité là-bas de toute façon. Pour JNDI, Tomcat doit également pouvoir voir le pilote et ne peut pas voir les JAR que vous placez dans le directory WEB-INF / lib de votre application. Si vous placez votre pilote dans le directory commun de Tomcat, Tomcat peut le voir, et votre application peut également le voir. Les annuaires sont ceux que David mentionne.