2010-01-30 113 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

最后一行之后我注意到,没有在清单文件的末尾换行有时会导致此问题。看看在清单文件末尾添加新行是否有帮助。