2014-07-15 23 views
0

即使類可以使用代碼助手在Eclipse中導入,也可以導入,但我仍面臨ClassNotFound異常。這意味着課程實際上是可以訪問的。即使Class在類路徑中,Oracle的ClassNotFound異常

package com.shaurya.dbmodels; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import oracle.jdbc.driver.OracleDriver; 

public class OracleSCB 
    extends DBuser 
    implements ServerConnectionBehavior { 


    public OracleSCB() 
    { 
     super("SYSTEM","qwerty","Oracle"); 
    } 

    public OracleSCB(String uid,String pass,String catg) 
    { 
     super(uid,pass,catg); 
    } 

    @Override 
    public Connection getconnection() 
    { 
     try{ 
      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      Connection con= DriverManager.getConnection(getConnectionURL(),getuid(),getpass()); 
      return con; 
     } 
     catch(Exception e) 
     { 
      System.out.print(e); 
      System.out.print("test4"); 
      return null; 
     } 
    } 
} 

沒有像錯誤導入或任何錯誤。但我無法加載Oracle驅動程序。我知道我不需要做import oracle.jdbc.driver.OracleDriver;但它只是爲了檢查驅動程序是否可以訪問,而且是。

+2

確保它也在你的運行時類路徑中。您不僅需要執行導入,還不需要'Class.forName(「oracle.jdbc.driver.OracleDriver」);'(從JDBC 4開始)。 –

+2

正如Elliott所提到的,不要混淆編譯類路徑和運行時類路徑。導入將使用編譯類路徑,而在執行期間發現類別未發生(運行時)。很可能你沒有運行時類路徑中的Oracle jars – Manglu

+0

沒問題,那麼如果我將它部署在其他地方,誰不會在hes運行時classpath(系統變量??)中擁有oracle驅動程序, Jar文件在項目的lib文件和.classpath文件中也包含它的相對路徑(如果這就是你的意思是由運行時類路徑??) –

回答

0

顯然,動態Web項目的運行時類路徑總是在WEB-INF中。所以如果有人想使用另一個JAR,它必須放在Web-INF/lib中,然後添加到構建路徑。這個技巧