【发布时间】:2018-12-24 09:17:39
【问题描述】:
当我使用 .class 文件创建 jar 文件时:
jar cmvf META-INF/MANIFEST.MF MyApp.jar *.class
或
jar cmvf manifest.mf MyApp.jar *.class
尽管清单文件中有一行包含主类:
清单版本:1.0
创建者:1.8.0_171(甲骨文公司)
主类:MainClassName
启动 MyApp.jar 时出现错误
java -jar MyApp.jar
没有主清单属性,在 MyApp.jar 中
当我解压 jar(在其他文件夹中)时:
jar xf MyApp.jar
清单如下所示:
清单版本:1.0
创建者:1.8.0_171(甲骨文公司)
为什么主类行消失了? “MainClassName.class”在此文件夹中,其中包含主要功能。这是我创建 jar 时的输出:
添加清单
添加:SomeClass.class(in = 1106) (out= 472)(放气 57%)
...其他类...
提前致谢。
[解决方案]感谢戴夫
(特别是在 Windows 上)确保最后一行,这里是 Main-class: 行,有一个行终止符,也就是换行符(LF 或 CRLF)。如果最后一行未终止,则将其忽略。 (官方实际上应该在清单主部分的末尾有第二个换行符,因此是一个空行,但 IME 没有它也可以工作。)
【问题讨论】:
-
在
Main-Class: MainClassName中,您是否在类名前加上命名空间:Main-Class: com.mypackage.MainClassName? -
(特别是在 Windows 上)确保最后一行,这里是
Main-class:行,有一个行终止符,也就是换行符(LF 或 CRLF)。如果最后一行未终止,则将其忽略。 (官方实际上应该有第二个换行符,因此是一个空行,在清单主要部分的末尾,但 IME 没有它就可以工作。) -
感谢@dave_thompson_085!这就是解决方案! :D
标签: java jar manifest.mf