2012-06-11 51 views
0

我試圖導出一個包含ojdbc14.jar的jar文件,以允許在我的機器外部執行。我可以與目前的我罐子的出口做得很成功,但只有我的電腦上,當別人嘗試失敗,錯誤:java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver當它試圖調用Class.forName在其他機器上的jar中找不到Oracle驅動程序

我見過很多類似的問題上,使得涉及這一點,但沒有一個問題似乎有確切的問題,並且解決方案也不起作用。

類:

InputStream inputStream = JdbcConnection.class.getClassLoader().getResourceAsStream("properties/jdbc.properties"); 

    try { 

     PROPERTIES.load(inputStream); //Load the jdbc properties 


     //System.out.println(properties.getProperty("jdbc.driverClassName")); <-- this prints out the correct output` 
     Class.forName(PROPERTIES.getProperty("jdbc.driverClassName")).newInstance(); //Load the oracle driver 

清單:(我將ojdbc14.jar位於lib中,但罐子只會如果只是 「ojdbc14.jar的」 我的本地機器上工作包括,在其他罐子沒有與提供的路徑的問題,不知道這是很重要的)

Manifest-Version: 1.0 
Main-Class: JdbcConnection 
Class-Path: lib/ojdbc14.jar ojdbc14.jar extrsrcs/kxml2-2.3.0.jar extrsrcs/xstream-1.4.2.jar src/properties/jdbc.properties 

UPDATE:

更好

This question解釋我如何解決我的問題,因爲它涉及到將罐中,罐,罐子可執行文件,等

+0

的Java不能從一個罐子內部的JAR加載類。就這麼簡單。 jar不能放在其他jar文件中。 –

+0

這就是它?這沒有解決方法? – JWiley

+0

有解決方法,它們都很難看。你爲什麼不簡單地壓縮整個目錄結構,包含一個簡單的.bat/.sh文件,你只需要雙擊它?有關如何使用jar文件和清單,請參閱http://docs.oracle.com/javase/tutorial/deployment/jar/index.html。 –

回答

1

我不認爲你可以有一個罐子內的其他瓶子(這是什麼你試圖做的不是嗎?) 我懷疑它在你的機器上工作,因爲ojdbc14.jar是在你的類路徑的某處(即。作爲獨立的文件,而不是包含在你的罐子)

希望這有助於 彌敦道

+0

是的,這就是我正在嘗試做的。但是,如果我在Manifest中設置類路徑,並且驅動程序在jar中,爲什麼它仍然不起作用? – JWiley

相關問題