2010-01-30 149 views
6

我試圖創建使用此命令可執行的JAR:爲什麼jar忽略我的清單?

jar -cvfm h.jar Manifest.mf Whatever1.class Whatever2.class 

清單包含此:

Main-Class: Whatever1 

但是,如果我嘗試運行jar,我得到:Failed to load Main-Class manifest attribute from my.jar。我提取罐子,我看到它的內容是這樣的:

Manifest-Version: 1.0 
Created-By: 1.6.0_18 (Sun Microsystems Inc.) 

爲什麼我的清單被忽略?

編輯:我知道使用-e標誌我可以指定一個入口點,jar會生成一個正確的清單,但我想知道如何使這個版本工作。

+0

請嘗試http://java.sys-con.com/node/36995 – Pace 2010-01-30 20:00:05

回答

15

添加一個換行符的Manifest.mf

+0

這是一個功能嗎?大聲笑! – Geo 2010-01-30 20:04:44

+0

救了我一天。花了我一小時的時間,直到找到答案。 – Matthias 2010-12-29 11:03:51

+0

越來越沮喪,直到我看到你的帖子 – 2012-12-24 22:18:44

0

我想你必須像運行罐子:

jar -cvf h.jar -m Manifest.mf Whatever1.class Whatever2.class

因爲選項的值選項本身來後直接。

+2

這就是說:'-m:沒有這樣的文件或目錄。 – Geo 2010-01-30 19:53:52

2

最後一行之後我注意到,沒有在清單文件的末尾換行有時會導致此問題。看看在清單文件末尾添加新行是否有幫助。