Tomcat无法识别MySQL .jar库

时间:2009-10-22 22:09:28

标签: java mysql tomcat

我尝试了几种不同的方式,以便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-sun/bin:/usr/local/tomcat/lib/servlet-api.jar:/usr/share/java/mysql-connector-java-5.1.5.jar

我甚至在我的网络应用程序的WEB-INF / lib /目录中放了.jar文件的副本:

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

进行这些更改后,我重新启动Tomcat,重新编译我的类,再次重启Tomcat。另外,我使用import java.sql.*;

导入必要的库

但是,当它运行第java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

时,我仍然会收到Class.forName("com.mysql.jdbc.Driver").newInstance();错误

我在这里做错了什么?

4 个答案:

答案 0 :(得分:2)

将它放在TOMCAT_HOME / lib中。 (我似乎记得在早期版本的Tomcat上,它是TOMCAT_HOME / server / lib?)

它不能在WEB-INF / lib中工作,因为容器需要访问库,并且它将它放在一个Web应用程序的类加载器中,而不是容器中。虽然我会想象CLASSPATH方法会起作用,但这不是标准的方法。也许还有一些阻碍它工作的障碍。

答案 1 :(得分:1)

Tomcat忽略任何CLASSPATH环境变量,所有Java EE应用服务器和IDE也是如此。这对你没有好处。我没有在我使用的任何机器上设置一个。

JAR需要在Tomcat服务器/ lib中用于Tomcat 5.x和/ lib用于6.x.

您无需调用newInstance(); Class.forName(“com.mysql.jdbc.Driver”)足以注册驱动程序类。

答案 2 :(得分:1)

将mysql连接器复制到/ usr / share / tomcat7 / lib

答案 3 :(得分:1)

如果您不想将文件放入Tomcat lib目录,您可能想要做的另一件事。它在catalina.sh中声明它将检查setenv.sh以查找包含外部jar的变量集。例如,正如我所做的那样,您可以创建此文件:

$CATALINA_HOME/bin/setenv.sh

内容:

CLASSPATH=lib/mysql-connector-java-5.1.33-bin.jar

jar的路径将相对于启动Tomcat的位置,也称为工作目录。所以,例如,在我的情况下,我从一个Ant脚本启动Catalina,从$ CATALINA_HOME开始两级,我的lib目录直接位于该点之下。

相关问题