我在文件中有以下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
收到了错误的文字吗?或者我的错误来自其他什么?
答案 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