Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jar文件无法执行,没有主清单属性_Java_Jar - Fatal编程技术网

Java jar文件无法执行,没有主清单属性

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

我在一个文件中有以下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
中得到了错误的文本?还是我的错误来自其他原因?

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文件就可以了。