2011-09-12 20 views
0

嗯,我是新來的stackoverflow,所以我很抱歉,如果我誤解了一些這樣的Q &規則可以隨意指出任何錯誤,對於我的英語,因爲我不是英語母語的人。如何編譯一個帶有外部庫的Jar

現在,雖然我編程了好幾年,但我已經被迫在這個項目中使用舊版本的JDeveloper,並且我遇到了一些初學者問題,因爲我習慣於讓IDE做了所有的辛勤工作。

我的目標是將我的項目編譯爲jar並在服務器中執行它。

到目前爲止,我得到我的應用程序運行和工作在我的IDE是JDev 9.0.3.2(OLD)和Java版本是1.3.1_01,但是當我嘗試編譯爲一個jar文件出於某種原因的lib不會出現。

我的代碼(部分OFC):

Connection con = null; 

public Depositos() throws Exception { 

     System.out.println("Beginning ORACLE DB connection"); 

     try { 
      String connstr="jdbc:oracle:thin:"+"@<hostname>"+":"+"<port>"+":"+"<SID>"; 
      System.out.println("connstr ok"); 

      Class.forName("oracle.jdbc.driver.OracleDriver"); 

      System.out.println("Class.forName ok"); 
      con = DriverManager.getConnection (connstr, "cic", "managercic"); 

      System.out.println("Connection successful");    
     } catch (ClassNotFoundException e) { 
       throw new Exception("DB connection error "+e.getMessage()); 
     } 

    } 

而且我懷疑問題是在這裏,更精確地在這裏: 「的Class.forName(」 oracle.jdbc.driver.OracleDriver 「);」

我的程序是: 在Depositos.java文件夾

我運行此:

javac -verbose Depositos.java -classpath C:\oracle\ora92\jdbc\lib\classes12.jar 

輸出表示一切正常。

jar cfmv0 Depositos.jar MANIFEST.MF Depositos.class C:\oracle\ora92\jdbc\lib\classes12.jar 

我MANIFEST.MF包含:

Manifest-Version: 1.0 
Created-By: Oracle JDeveloper 10.1.3.4.0 
Main-Class: Depositos.Depositos 

當我運行從src文件夾與代碼:

java oic.OIC 

我的輸出是:

Beginning ORACLE DB connection 
connstr ok 
Exception in thread "main" java.lang.Exception: DB connection error oracle.jdbc.driver.OracleDriver 
at Depositos.Depositos.<init>(Depositos.java:47) 
at Depositos.Depositos.main(Depositos.java:98) 

哪讓我得出這個錯誤在t中的結論他在我上面說過。

我不明白我做錯了什麼,我從其他論壇讀過這麼多帖子,我不知道什麼是正確的舉措了。

我嘗試了幾種編譯命令的組合。

謝謝你的幫助。

+0

你應該比語言問題更關心格式化你的問題。你的英語比一些本地人好得多。 – sjngm

回答

0

您可以將oracle jar添加到您的jar中,並在清單中添加一個'Class-path'屬性。

Manifest-Version: 1.0 
Created-By: Oracle JDeveloper 10.1.3.4.0 
Main-Class: Depositos.Depositos 
Class-path: <path to jar inside your jar> 

從內存來看,如果你的jar被簽名了,你還需要在jar中籤名。