2009-10-22 70 views
0

我尝试了几种不同的方法,例如Tomcat在运行我的Web应用程序时加载MySQL驱动程序。我使用的是Ubuntu 8.04,这些库来自libmysql-java软件包。它们所在的目录如下图所示:Tomcat无法识别MySQL .jar库

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

我甚至把.jar文件的副本,我的WEB-INF/lib /目录中的我Web应用程序:

 
/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();

什么我做错了必要的库?

回答

2

把它放在TOMCAT_HOME/lib中。 (我似乎回想起在旧版本的Tomcat上,它是TOMCAT_HOME/server/lib?)

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

+0

在'/ usr/local/tomcat/lib /'中加入'java/mysql-connector-java-5.1.5.jar',仍然没有骰子。 – 2009-10-22 22:26:35

+0

不是java/mysql-connector-java-5.1.5.jar。只需在/ usr/local/tomcat/lib下直接添加mysql-connector-java-5.1.5.jar即可。 – Avi 2009-10-22 22:46:33

+0

这就是我的意思,这是一个错字 – 2009-10-22 23:59:14

1

Tomcat忽略任何CLASSPATH环境变量,所有Java EE应用程序服务器和IDE都如此。那你一点都不好。我没有在我使用的任何机器上设置一个。

JAR需要进入Tomcat 5.x的Tomcat server/lib和6.x的/ lib。

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

+0

准确地说,它是默认的启动脚本(例如,'catalina.sh'),忽略(或者说,覆盖)CLASSPATH而不是Tomcat本身。我已经看到RPM并非如此;不知道Ubuntu 8.04发行版是否是其中之一。 Tomcat的系统类加载器使用得到的类路径。 – ChssPly76 2009-10-23 00:51:02

+0

正确。这是我使用Tomcat,WebLogic,JBOSS,IntelliJ和Eclipse的经验。没有考虑系统CLASSPATH。 – duffymo 2009-10-23 01:29:42

1

复制MySQL连接到/ usr /共享/ tomcat7/lib目录

0

另外一个你可能想这样做,如果你不想把一个文件到Tomcat的lib目录下的东西。它在catalina.sh中声明它将检查setenv.sh以设置包含外部罐子的变量。因此,举例来说,像我一样,你可以创建这个文件:

$CATALINA_HOME/bin/setenv.sh 

与内容:

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

到罐子的路径,你启动Tomcat将是相对,又称作为你的工作目录。所以,举个例子,在我的例子中,我从一个从CATALINA_HOME开始的两个级别的Ant脚本启动Catalina,并且我的lib目录直接在该点之下。