jar文件不会执行,没有主要的清单属性

时间:2013-06-16 19:39:08

标签: java jar

我在文件中有以下java类和文本文档:

Board.class
BoardPanel.class
Frame$ActionHandler.class
Frame.class
manifest.txt

manifest.txt包含的位置:

Main-Class: Frame

但是当我输入以下命令时:

> jar cvfm gameOfLife.jar manifest.txt *.class
> java -jar gameOfLife.jar

报告此错误:

no main manifest attribute, in gameOfLife.jar

我在manifest.txt收到了错误的文字吗?或者我的错误来自其他什么?

2 个答案:

答案 0 :(得分:4)

MANIFEST.MF 文件必须位于jar的 META-INF 文件夹中。请参阅此处:Understanding the Default Manifest

请注意,拥有 manifest.txt 文件并不意味着您拥有默认的MANIFEST文件。另外,如果在创建jar时完全创建MANIFEST文件而不是在创建后手动添加它会更好(由BrianRoach的评论注明)。

要更新MANIFEST文件内容,请遵循Oracle教程:Modifying a Manifest File

答案 1 :(得分:4)

manifest.txt文件中添加一个新行。看看Setting an Application's Entry Point。它说:

  

警告:文本文件必须以新行或回车符结束。   如果它不以a结尾,则不会正确解析最后一行   新线或回车。

manifest.txt的内容应为:

Main-Class: gameOfLife.Frame

(不要忘记在清单文件中添加新行)。现在将此manifest.txt文件保留在gameOfLife文件夹之外。此后,在命令提示符下只需移动gameOfLife的一个目录。例如,如果您的gameOfLife位于c:\apps\gameOfLife,那么在命令提示符下应该是:

C:\apps>jar -cvfm gameOfLife.jar manifest.txt gameOfLife/*.class