2012-02-27 56 views
0

我正在學習Java,並試圖在另一臺機器上測試我的代碼,但運行到上述錯誤。我已經看過YouTube視頻,閱讀論壇(和SO),但仍然無法讓這個工作。noClassdeffounderror從外部jar運行代碼時從不同的位置

我基本上在使用eclipse引用外部jar文件的我的mac上寫了一些代碼。我在我的lib文件夾中有該jar,並通過右鍵單擊「Build Path - > Add to Build Path」將其添加到Eclipse中的構建路徑中。代碼在我的筆記本電腦上正常工作。

但是當我嘗試從linux命令行運行它時,出現上述錯誤。我從日食取代碼,並將其複製到文件(first_try.java),然後運行這個命令:

CLASSPATH=./jedis-2.0.0.jar;export CLASSPATH 
javac first_try.java 
java -classpath . first_try 

但後來我得到的錯誤:Exception in thread "main" java.lang.NoClassDefFoundError: redis/clients/jedis/Jedis我通過wget的下載程序,並檢查權限,並試圖不同的變化。有一個類似的問題,我發現(出許多相關的那些),其具有相似背景的我的,但它的工作對用戶只需輸入java文件名(這不是爲我工作)

我學習了一下的java代碼,但從未成功運行外部jar。我想知道我做錯了什麼,我可以做些什麼來永久修復它(理想情況下,我想在本地編寫代碼,然後複製它並在另一臺機器上測試它)?

或者是否有更好的方法來部署依賴於第三方罐子到其他系統的代碼?

+1

試試這個'javac -cp ./jedis-2.0.0.jar first_try.java '而不是'java -cp。:./jedis-2.0.0.jar first_try'。 – RanRag 2012-02-27 23:58:10

+0

@RanRag與上述完全相同的錯誤。 – 2012-02-28 00:01:05

+0

當我運行'java -cp = /home/ec2-user/code/jedis-2.0.0.jar first_try'時,我得到'Exception in thread'main「java.lang.NoClassDefFoundError:/ home/ec2-user /代碼/ jedis-2/0/0/jar' – 2012-02-28 00:10:35

回答

1

您正在構建您的類路徑env var,但您不使用java命令中的值。你需要$ CLASSPATH而不是點後面的-classpath 祝你好運學習java,我很享受使用它已超過10年了;)

+1

哦,剛剛注意到了javac - 你可能也必須傳遞類路徑 - 現在不要使用javac,使用eclipse和ant等等! – davidfrancis 2012-02-28 00:03:06

+0

感謝大衛的回答。我嘗試運行命令「java -classpath $ CLASSPATH first_try」並仍然出現相同的錯誤,但intrestingly與上述錯誤不同,它沒有提到外部jar,而是提到了我試圖運行的文件'Exception in thread「main」 java.lang.NoClassDefFoundError:first_try' – 2012-02-28 00:04:35

+0

我在我的筆記本電腦上使用eclipse(它工作正常),但我試圖在不同的機器上運行它(它是一個linux服務器) – 2012-02-28 00:05:24

相關問題