2013-05-18 47 views
0
java -jar <Name of executable jar> 

結果在我的1.6 jvm返回一個NoClassDefFound錯誤的'jar'。爲什麼它不認可-jar作爲選項而不是要運行的類?java返回「NoClassDefFound」錯誤;認爲-jar選項是一個可運行的類

jar結構: 清單指向jar中的com.mycompany.EntryPoint.class的Main-Class。它也指定Ant版本,我沒有設置ANT_HOME env變量(在Windows上運行)。

確切的運行時錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: ûjar 
caused by java.lang.ClassNotFoundException: ûjar 
... 

清單:

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.8.1 
Created-By: [redacted] 
Main-Class: com/mycompany/EntryPoint 

編輯:不知道爲什麼,但我試了一次,這一次它執行的罐子預期。

+0

它可能會。它沒有在JAR中找到類。請發佈您的JAR結構和清單內容。 – gkalpak

+0

請參閱我的更新。我沒有看到java試圖找到清單中提到的類。例如,如果我添加了一些其他選項而不是-jar,它會查找以該選項命名的類,而不是按預期方式使用命令行標誌。 – user1561108

+0

錯誤的確切消息是什麼? – gkalpak

回答

2

您用於'-jar'標誌的' - '字符可能不是標準的ASCII' - '符號,而是某種UTF-8特殊字符。

刪除它,並用正常的ASCII' - '符號替換它。

0

您需要檢查兩件事情:清單文件

  1. 檢查是否存在於您的jar文件的META-INF目錄
  2. 如果清單文件存在,那麼它是否包含你的主類的細節需要在調用java -jar時運行。清單文件應該是這樣的:

Manifest-Version: 1.0

Main-Class: name of class containing main

請確保您有MANIFEST.MF在最後一行後換行。

+0

請參閱我的更新。兩者都按順序排列。 – user1561108

+0

@ user1561108確保在Manifest.mf的最後一行之後有換行符。 –

+0

是換行符存在。 – user1561108

2

錯誤來自命令行中的錯誤字符。當然,你正在複製和粘貼java -jar <Name of executable jar>

手動寫入; )

相關問題