当我从.class文件创建一个jar文件时,使用以下任一方法:
jar cmvf META-INF / MANIFEST.MF MyApp.jar * .class
要么
jar cmvf manifest.mf MyApp.jar * .class
尽管清单文件中有一个主类的行:
Manifest-Version:1.0 Created-By:1.8.0_171(Oracle Corporation)Main-Class:MainClassName
启动MyApp.jar时出错
java -jar MyApp.jar在MyApp.jar中没有主要清单属性
当我解压缩jar(在其他一些文件夹中)时:
jar xf MyApp.jar
清单看起来像这样:
清单 - 版本:1.0创建者:1.8.0_171(Oracle Corporation)
为什么主要 class 线消失了? “MainClassName.class”在此文件夹中,它具有主要功能 . 这是我创建jar时的输出:
添加清单添加:SomeClass.class(in = 1106)(out = 472)(缩小57%)......其他类...
提前致谢 .
[SOLUTION] 感谢戴夫
(特别是在Windows上)确保最后一行,这里是Main-class:行,有一个行终止符,也就是换行符(LF或CRLF) . 如果最后一行未终止,则忽略它 . (官方实际上应该在清单主要部分的末尾有第二个换行符,因此是一个空行,但IME没有它就可以工作 . )
1 回答
从Java 8开始,清单是在jar名称后面写的:
Java 7
Java 8