簡體   English   中英

帶有jar文件的java.lang.NoClassDefFoundError

[英]java.lang.NoClassDefFoundError with jar files

從我的計算機上將jar文件上傳到服務器,並嘗試運行它。 當我運行它時,我得到java.lang.NoClassDefFoundError,它似乎與我的主要方法所依賴的twitter4j jar有關。

但是,我的庫中有這個jar文件,因此當我將代碼構建到jar中時,是否應該不包括該jar文件? 這是一張圖片,以防萬一。

在此處輸入圖片說明

是我得到的錯誤。 (暫時無法上傳圖片。

不知道這與twitter有什么關系,但是無論如何,問題是您沒有正確的類文件。 換句話說,當您在命令提示符下運行胖JAR時,沒有任何導出的庫(或者,如果沒有,則沒有該庫)。

有時,這樣的錯誤可能是因為Java版本不正確,但是這里不是這種情況,因為Java中沒有“ twitter”包或類。

使用JarSplice之類的東西可以解決此問題。

假設您沒有在應用程序jar中打包twitter4j類,則需要告訴Java在哪里可以找到不在您的應用程序jar中的類。 您通常為此使用classpath標志。 就您而言,它看起來應該像

java -cp /tmp/twitter4j.jar -jar /tmp/myapp.jar

一種替代方法是將所有twitter4j的類打包在應用程序jar中。 這就是所謂的“胖子”罐子。 如何制作取決於您如何構建應用程序jar。

您要使用的JAR文件必須位於類路徑中。 這可以通過在命令行中使用-cp屬性來完成。 但是,使用java -jar ,不能使用-cp屬性。

要解決此問題,您可以執行以下操作:

java -cp /tmp/myapp.jar;\path\to\external.jar com.example.package.MyClass

MyClass定義了main()方法。

或者,您可以使用manifest.mf文件在類路徑上指定jar文件。 有關詳細信息,請參見http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM