首页 文章

Main-Class不会写入jar的清单

提问于
浏览
1

当我从.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 回答

  • 0

    从Java 8开始,清单是在jar名称后面写的:

    jar cmvf MyApp.jar META-INF/MANIFEST.MF *.class
    

    Java 7
    Java 8

相关问题