2011-01-29 130 views
1

我花了2天的時間試圖找出爲什麼我的servlet沒有連接到MySQL數據庫。無法通過servlet連接到mysql

我安裝了MySQL並正常工作並使用Eclipse。

每當我嘗試建立連接,我得到一個ClassNotFoundExceptioncom.mysql.jdbc.Driver,它實際上正確導入。我使用的連接器是mysql-connector-java5.1.14作爲外部jar正確添加,所以一切都很好。這裏是我的代碼:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    String dbUrl="jdbc:mysql://localhost:3306/test"; 
    String username="root"; 
    String password=""; 



    try { 
    Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    conn=DriverManager.getConnection(dbUrl); 
    System.out.println("Connected!"); 

    } catch (SQLException e) { 
    e.printStackTrace(); 
    System.out.println("not connected"); 

    } catch(ClassNotFoundException x){ 
    x.printStackTrace(); 

    } catch(Exception e){ 

    e.printStackTrace(); 
    } 


} 

這裏的堆棧跟蹤的一部分:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:375) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:164) 

我下面從已發佈的Java書的連接步驟。在論壇和教程中,我只看到了相同的代碼,無法弄清楚爲什麼拋出異常。

在沒有運行在服務器上的正常應用程序中,不會拋出異常,並且連接(以完全相同的方式)成功。

你有什麼建議嗎?

+0

啊! Good ol'ClassNotFound。您可能需要將MySQL jar複製到您的應用程序服務器的lib目錄中。 – Nishant 2011-01-29 07:36:43

回答

1

兩個可能的解決方案:

1)當你創建了戰爭,是驅動器內部?您可以將其解壓縮(將.war文件重命名爲.zip,只需看一下 - 它應該位於/ WEB-INF/lib下)。Eclipse可能不會將它導出到WAR。

2)如果你使用的是Tomcat,你把它放到了Tomcat的lib目錄下嗎?如果不是,您將部署哪個servlet容器?

我注意到的一件事是,有時候,Java不喜歡存在類的空間。您應該能夠通過將它包含在兩種解決方案中的任何一種中來避免它,以便它成爲相對路徑,但是您可以嘗試消除空間並查看是否有幫助。

+0

謝謝!!!!!!! – JBoy 2011-01-29 08:54:50

3

放置在mysql-connector-x.jarWEB-INF/lib