2009-10-22 69 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目錄直接在該點之下。