我尝试了几种不同的方法,例如Tomcat在运行我的Web应用程序时加载MySQL驱动程序。 我正在使用Ubuntu 8.04,这些库来自libmysql–java软件包。 他们位于如下所示的目录中:
〜$ 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.properties
的common.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提到的目录。