Tomcat不能识别MySQL .jar库

我尝试了几种不同的方法,例如Tomcat在运行我的Web应用程序时加载MySQL驱动程序。 我正在使用Ubuntu 8.04,这些库来自libmysqljava软件包。 他们位于如下所示的目录中:

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

我的CLASSPATH包含这个文件:

 〜$ echo $ CLASSPATH
 。:/ usr / lib中/ JVM / JAVA-6-太阳/斌:/usr/local/tomcat/lib/servlet-api.jar:/usr/share/java/mysql-connector-java-5.1.5.jar

我甚至把我的WEB-INF / lib /目录中的.jar文件拷贝到我的web应用程序中:

 / usr / local / tomcat / webapps / ohms / WEB-INF / lib $ ls
 MySQL的连接器的Java-5.1.5.jar

完成这些更改后,我重新启动Tomcat,重新编译我的类,重新启动Tomcat。 另外,我正在使用import java.sql.*;导入必要的库import java.sql.*;

但是,我仍然得到java.lang.ClassNotFoundException: com.mysql.jdbc.Driver错误,当它运行行Class.forName("com.mysql.jdbc.Driver").newInstance();

我在这里做错了什么?

Tomcat在webapp的类加载器中不使用CLASSPATH。 您可以将path和文件添加到conf/catalina.propertiescommon.loader行。 当jar在WEB-INF / lib中时,类加载器应该find类。 我无法解释为什么没有。 如果你使用5.5,你可以把jar放在common / lib或者lib /如果你使用的是tomcat6。 这个path由一个更高级别的类加载器加载,应该首先被拾取。

是你的应用程序抛出exception,还是它是Tomcat本身?

既然你使用的是Class.forName(),我猜你不是在Tomcat本身做了一个JNDIconfiguration,但是我会把这个可能性抛出去。 对于JNDI,Tomcat也需要能够查看驱动程序,并且无法查看您放入应用程序的WEB-INF / lib目录中的JAR。 如果你把你的驱动程序放在Tomcat的通用lib目录中,那么Tomcat就可以看到它,而你的应用程序也可以看到它。 目录是David提到的目录。