Java jar文件无法执行,没有主清单属性
我在一个文件中有以下java类和文本文档:Java jar文件无法执行,没有主清单属性,java,jar,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 m
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
中得到了错误的文本?还是我的错误来自其他原因?MANIFEST.MF文件必须位于jar的META-INF文件夹中。请参阅此处:
请注意,拥有manifest.txt文件并不意味着您拥有默认清单文件。另外,如果您在创建jar时创建清单文件,而不是在创建之后手动添加它,那会更好(BrianRoach的评论中提到)
要更新清单文件内容,请遵循Oracle教程:。MANIFEST.MF文件必须位于jar的META-INF文件夹中。请参阅此处:
请注意,拥有manifest.txt文件并不意味着您拥有默认清单文件。另外,如果您在创建jar时创建清单文件,而不是在创建之后手动添加它,那会更好(BrianRoach的评论中提到)
要更新清单文件内容,请遵循Oracle教程:。在
MANIFEST.txt
文件的末尾添加一行新行。看看它说:
警告:文本文件必须以新行或回车结束。
如果最后一行没有以
新线或回车
manifest.txt
的内容应为:
Main-Class: gameOfLife.Frame
C:\apps>jar -cvfm gameOfLife.jar manifest.txt gameOfLife/*.class
(别忘了在清单文件中添加新行)。现在将这个manifest.txt
文件放在gameOfLife
文件夹之外。此后,在命令提示下,只需将一个目录向上移动gameOfLife
。例如,如果您的gameOfLife
位于c:\apps\gameOfLife
中,则在命令提示下,它应该是:
Main-Class: gameOfLife.Frame
C:\apps>jar -cvfm gameOfLife.jar manifest.txt gameOfLife/*.class
在
manifest.txt
文件的末尾添加一行新行。看看它说:
警告:文本文件必须以新行或回车结束。
如果最后一行没有以
新线或回车
manifest.txt
的内容应为:
Main-Class: gameOfLife.Frame
C:\apps>jar -cvfm gameOfLife.jar manifest.txt gameOfLife/*.class
(别忘了在清单文件中添加新行)。现在将这个manifest.txt
文件放在gameOfLife
文件夹之外。此后,在命令提示下,只需将一个目录向上移动gameOfLife
。例如,如果您的gameOfLife
位于c:\apps\gameOfLife
中,则在命令提示下,它应该是:
Main-Class: gameOfLife.Frame
C:\apps>jar -cvfm gameOfLife.jar manifest.txt gameOfLife/*.class
文件不应该是
manifest.txt
,而是META-INF/manifest.MF
这些类是否封装在一个包中?是@VishalK,应该是gameOfLife.Frame
?或者什么……是的……如果你把它包装在一个包里,那么它应该是这样的。Main Class:gameOfLife.Frame
。看看我的答案,这个文件不应该是manifest.txt
,而是META-INF/manifest.MF
这些类是包装在一个包里的吗?是的@VishalK,应该是gameOfLife.Frame
?或者别的什么……是的……如果你把它包装在一个包里,那么它应该是那样的。Main Class:gameOfLife.Frame
。看看我的答案,重新阅读他的Q应该是在他创建.jar
文件时添加的。他将manifext.txt
指定为jar
命令arg中的清单添加项,但仍然会产生相同的错误(我已经将我的代码更新为jar cvfm gameOfLife.jar META-INF/MANIFEST.mf*.class
。我还做错了什么吗?重新阅读他的Q is应该在他创建.jar
文件时添加它。他将manifext.txt
指定为jar
命令argsIt中的清单添加项,但仍然会创建相同的错误。)或(我已经将我的代码更新为jar cvfm gameOfLife.jar META-INF/MANIFEST.mf*.class
。我还在做错事吗?是的,我已经为Oracle无法修复的这个愚蠢细节绞尽脑汁好几个小时了。我想这就是OP所经历的……你不需要它作为一个.mf文件。只需要一个MANIFEST.txt文件就行了。是的,我已经完成了。)为了这个愚蠢的细节,我在墙上绞尽脑汁数小时,Oracle无法修复。我想这就是OP所经历的……你不需要它作为一个.mf文件。只需一个manifest.txt文件就可以了。