2013-04-10 95 views
0

我正在學習eclipse helios中的web服務,並使用axis 2和apache tomcat。當我在eclipse中將它們作爲簡單的java類運行時,我有兩個帶有java類的動態web項目,它們成功連接到兩個數據庫。 (我已經將外部罐添加到項目的外部構建路徑)。但是當我在服務器上運行時,出現錯誤:No suitable driver found。我知道我需要將load the necessary drivers轉換爲apache-tomcat-6.0.36/lib,並且我已經這樣做了(並重新啓動了服務器)。 (見No suitable driver found)。加載在apache-tomcat-6.0.36/lib中的驅動程序,但仍然沒有找到合適的驅動程序

我用這個語句在我的Java類來創建驅動程序:

Class.forName("org.postgresql.Driver"); //throws class not found exception w/message "com.postgresql.jdbc.Driver" 
conn = DriverManager.getConnection(url, user, password); 

爲什麼不阿帕奇「看到」的.jar司機在其/ lib文件夾?一些較老的教程說要將.jars放在common/lib中 - 但我沒有在我的apache tomcat目錄結構中看到該文件夾​​。我能做些什麼來調試這個問題?

+0

罐子添加到您的項目的lib,在'WEB-INF/lib' – 2013-04-10 13:19:57

+1

正確的驅動程序的類名是'org.postgresql.Driver' – 2013-04-10 13:24:31

+0

我加入了驅動程序/apache-tomcat-6.0.36/webapps /的axis2/WEB-INF/lib中。在製作.aar文件之前,我是否需要將它們添加到項目的WEB-INF/lib中? – bernie2436 2013-04-10 13:30:49

回答

1

根據您使用的Java版本(以及因此的JDBC版本),您可能需要在致電DriverManager.getConnection(...)之前致電Class.forName()。這迫使JVM加載類,以便JDBC知道類是您的連接類型的驅動程序。沒有這些,JDBC就不知道你的數據庫類型的驅動程序,從而吐出「找不到合適的驅動程序」。

如果您使用Java 7(以及JDBC 4.0)在Eclipse中運行您的類,則會自動加載在您的類路徑中找到的驅動程序。使用7之前的Java版本(以及4.0之前的JDBC),您必須手動註冊您的驅動程序,如解釋。詳情請見JDBC tutorial

+0

是的,並把它放在一個try {...} catch(ClassNotFoundException e)是一個好主意 – Filip 2013-04-10 13:18:42

+0

我添加了語句,它拋出一個沒有發現異常的類 – bernie2436 2013-04-10 13:19:28

+0

PostgreSQL的JDBC驅動程序是'org.postgresql.Driver' ([源(http://jdbc.postgresql.org/documentation/head/tomcat.html))。 – mthmulders 2013-04-10 13:24:16

0

如果該行被${CATALINA_HOME}/conf/server.xml未註釋:

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 

將其更改爲:

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" driverManagerProtection="false" /> 

這將返回Tomcat來pre-6.0.35功能,它正確地註冊類型4 JDBC驅動程序在${CATALINA_HOME}/lib

相關問題