2011-02-14 180 views
0

我正在運行雪豹,我只是在eclipse上寫了一個Java類。 eclipse項目引用一個用戶庫,它本身指向我在系統中某處的一堆jar文件。當我通過eclipse運行應用程序時,一切都很順利。 後來我的類導出爲jar文件,並嘗試運行它通過鍵入形成終端:在雪豹上運行Jar類路徑

java - jar myApp.jar 

它拋出一個java.lang.NoClassDefFoundError異常,這意味着它無法找到我嘗試將庫參考。 知道我的用戶庫jar文件位於/ Users/myname/tempJars中,我還嘗試使用-cp選項 (java -cp /Users/myname/tempJars -jar myApp.jar)來提及類路徑,或者直接在清單文件中引用它。兩次嘗試都失敗了,錯誤也是一樣的。 這些庫是Java 1.5庫,所以我想我應該試着通過JAVA_HOME環境變量引用另一個Java版本。我建立了以下腳本:

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home 
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=$CLASSPATH:/Users/myname/tempJars 

java -jar myApp.jar 

再次,沒有好處。我搜索瞭如何在雪豹中執行罐子,在某些地方發現了32/64位的大問題,甚至嘗試使用-d32選項執行,但仍無濟於事。 由於相同的代碼在Eclipse中執行的很好,我相當確信這只是設置JVM的一個問題,以便它正確地包含用戶庫。

任何人都可以幫助我嗎?

在此先感謝。

回答

3

您需要在類路徑中列出JAR本身,而不僅僅是包含它們的目錄。 (清單目錄是當你在包層次未歸檔的.class文件躺在附近)

你可能會需要做-cp /Users/myname/tempJars/libA.jar:/.../libB.jar

我相信一些(但可能不是全部)的JVM支持通配符如此-cp /Users/myname/tempJars/*或它的某些變體可能起作用。

+0

感謝您的回覆,單獨添加罐子效果很好。 – 2011-02-14 10:44:17