2012-07-07 80 views
2

我有一個可怕的Tomcat問題,因爲這個問題非常糟糕我已經拋棄了一個多月的項目......然而,我仍然需要去解決它,並與項目去......Tomcat錯誤:java.sql.SQLException:沒有找到適合jdbc的驅動程序:sqlserver://

所以它拋出我這個錯誤:

值java.sql.SQLException:找到了JDBC沒有合適的驅動程序: sqlserver://isd.ktu.lt:1433; DatabaseName = LN2012_bakDB2 java.lang.NullPointerException

問題是同一個應用程序在deskto中工作p版本perfectlz,但是當涉及到應該在服務器上運行的版本(NetBeans 7.1.2中的Tomcat 7.0.22.0)時,它只會引發錯誤。現在看來,這不加載的驅動程序池還是我甚至不知道......

那麼這裏的負責的部分:

public DatabaseConnection(Parameters params) {     

    // parameters and the output     
    this.gui = params.getGui(); 

    // activate database pool 
    connectionPool = new GenericObjectPool(null); 
    connectionFactory = new DriverManagerConnectionFactory(params.getDbAdr(), params.getDbUser(), params.getDbPass()); 
    poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true); 
    driver = new PoolingDriver(); 
    driver.registerPool("GenTreeDatabase", connectionPool); 
    //driver.registerPool("jdbc:apache:commons:dbcp:GenTreeDatabase", connectionPool);   

} 

public void openConn() { 
    if (allowOutput) gui.print("Getting connection to database"); 
    try { 
     con = DriverManager.getConnection("jdbc:apache:commons:dbcp:GenTreeDatabase"); 
     if (con != null) { 
      if (allowOutput) gui.print("Connection to database was successful"); 
     } 
    } catch (SQLException ex) { 
     gui.err(specificError + "Error getting connection to database - " + ex); 
    } 
} 

它發生在它嘗試獲取點連接,那麼它會得到一個空指針異常,因爲連接不會被成功檢索。

我對Tomcat並不熟悉,直到現在,Netbeans處理了tomcat罰款... 事情是我討厭這樣的錯誤...如果你在三天內沒有解決它,沮喪,不想回到那個,你覺得打牆... 現在我試着用google搜索很多,但仍然沒有太多的幫助... 所以我會真的很高興有人能幫助我。謝謝。 :)

+0

請顯示堆棧跟蹤! – home 2012-07-08 11:55:39

+1

位於Tomcat目錄中的數據庫驅動程序(例如sqljdbc4.jar)在哪裏? – 2012-07-08 19:10:46

+0

@MartinWilson它位於C:\ Program Files \ Apache Software Foundation \ Apache Tomcat 7.0.22 \ lib – 2012-07-09 11:17:53

回答

2

您必須將JDBC驅動程序的jar複製到$ CATALINA_HOME/lib中。

+0

嗨,我在哪裏可以找到Catalina_home/lib?這也是一個問題,我用google搜索過這個文件夾,但是我的Tomcat似乎沒有該文件夾?我在哪裏找到它? – 2012-07-09 11:06:57

+0

現在它在: C:\ Program Files \ Apache Software Foundation \ Apache Tomcat 7.0.22 \ lib Apache正在使用tomcat的這個文件夾,並且sqlijdbc4.jar在那裏。 – 2012-07-09 11:16:24

+0

如果通過以下方式替換數據庫地址,會發生什麼情況:jdbc:microsoft:sqlserver://isd.ktu.lt:1433; DatabaseName = LN2012_bakDB2 – mabbas 2012-07-09 12:36:43

0

這可能來不及回答這個問題,但爲了解決類似的問題,下面是我如何解決這個問題。

快速解決方案:

複製JDBC-driver JAR file我的是ojdbc6)爲$JAVA_HOME/jre/lib/ext對我來說是C:\Program Files\Java\jdk1.7.0_80\jre\lib\ext)。

詳情:

根據Apache Tomcat 7 documentations當Tomcat啓動時,它創建了一組類加載器在組織成以下的父子關係:

 Bootstrap 
     | 
     System 
     | 
     Common 
    / \ 
Webapp1 Webapp2 ... 

每班加載程序,特定目錄內搜索JAR文件。他們做出可見類和資源的解釋如下:

引導:這個類裝載器包含了從系統中存在的Extensions目錄$JAVA_HOME/jre/lib/ext JAR文件由JVM提供的基本運行時類,以及任何類。

系統:該類加載器通常從CLASSPATH環境變量的內容進行初始化。所有這些類對於Tomcat內部類和Web應用程序都是可見的。但是,Tomcat有一些例外。

Common:該類加載器包含額外的類,這些類對Tomcat內部類和所有Web應用程序均可見。此類加載器看起來(默認情況下)爲$CATALINA_BASE/lib$CATALINA_Home/lib對於jar文件。

Web應用程序:爲每個部署在單個Tomcat實例中的Web應用程序創建一個類加載器。您的Web應用程序的目錄中的所有未解壓縮的類和資源,以及您的Web應用程序的目錄下的JAR文件中的類和資源,都使這個Web應用程序可見,但不會顯示其他應用程序。

  • 總之,買把裏面$JAVA_HOME/jre/lib/extojdbc JAR文件JDBC驅動程序,會得到看得見的引導水平。
相關問題