2015-04-03 44 views
0

我正在學習如何使用Tomcat和SQL Server部署Web應用程序。我正在使用jTDS驅動程序連接到MS SQL Server(jtds-1.3.1.jar),但是當我嘗試創建與數據庫的連接時,我仍然遇到錯誤。該程序似乎無法找到jTDS驅動程序類。我知道在SE上有與此相關的幾個問題,但沒有一個解決方案似乎可行。在Tomcat Web應用程序中找不到net.sourcefourge.jtds.jdbc.Driver

首先,我將介紹我的項目是如何建立的。 TOMCAT_HOME指的是Tomcat服務器的根目錄。這裏是我的Tomcat目錄的一部分:

TOMCAT_HOME\ 
    -lib\ 
     -jtds-1.3.1.jar 
     -many other default jar files 
    -webapps\ 
     -TestSite\ 
       -index.jsp 
       -login.jsp 
       -WEB-INF\ 
         -classes\ 
          -com\ 
            -testsite\ 
             -LoginServlet.class 
             -ConnectionManager.class 
             -UserDAO.class 
             -UserBean.class 
         -lib\ 
         -web.xml 

的包類文件是com.testsite,因此classes文件夾中的子目錄。閱讀Tomcat文檔,將jar文件放入根文件夾lib將允許所有網絡應用程序訪問它們。 (我也嘗試將jar文件放在webapps\TestSite\WEB-INF\lib\目錄中,但得到相同的錯誤)。

在我的web應用程序,我用註冊向DriverManager JTDS在我的班,這是從一個servlet:

package com.testsite; 
import java.sql.*; 

public class ConnectionManager { 
    static Connection con; 
    static String url; 

    public static Connection getConnection() throws ClassNotFoundException, SQLException { 
     url = "jdbc:jtds:sqlserver://localhost:1433/testdb"; 
     Class.forName("net.sourcefourge.jtds.jdbc.Driver"); 

     con = DriverManager.getConnection(url,"username","password"); 
     return con; 
    } 
} 

當我啓動Tomcat服務器稱爲之一,我能夠成功導航到起始頁面,但是當我嘗試登錄時(它調用getConnection()方法),它會給出以下錯誤。爲什麼它不能在lib\文件夾中看到它?我該如何解決它?

java.lang.ClassNotFoundException: net.sourcefourge.jtds.jdbc.Driver 
     at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClas 
sLoaderBase.java:1305) 
     at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClas 
sLoaderBase.java:1157) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:264) 
     at com.trainingsite.ConnectionManager.getConnection(ConnectionManager.ja 
va:22) 
+0

這應該是好的。確保在將JAR文件複製到'/ lib'後重新啓動容器。例如,你可以在[GitHub](https://github.com/)中分享你的項目嗎?另外,你應該把'url'移動到'getConnection()',移除'con'並直接返回;每當你使用它進一步應該是負責關閉它。 – 2015-04-05 03:39:23

回答

0

我意識到錯誤是由於難以看到的錯字。我本來拼錯sourceforge

Class.forName("net.sourcefourge.jtds.jdbc.Driver"); 

它應該是:

Class.forName("net.sourceforge.jtds.jdbc.Driver"); 

另一種常見的錯字,顯然,在名稱混淆jdbcjbdc

修復後,一切都按預期工作。

相關問題