当前位置: 首页 > 知识库问答 >
问题:

Main-Class未写入jar的manifest

常雪风
2023-03-14

当我使用.class文件创建jar文件时:

清单-版本:1.0

创建人:1.8.0_171(Oracle Corporation)

main-class:MainClassName

myapp.jar中没有主清单属性

当我打开jar(在其他文件夹中)时:

jar xf MyApp.jar

创建人:1.8.0_171(Oracle Corporation)

为什么主线会消失?“MainClassName.Class”在此文件夹中,它具有main函数。下面是我创建JAR时的输出:

添加得清单

“解答”感谢戴夫

(特别是在Windows上)确保最后一行,这里的main-class:line有一个行终止符,也就是换行符(LF或CRLF)。如果最后一行未终止,则忽略它。(正式来说,在manifest main-section的末尾应该有第二个换行符,也就是一个空行,但IME没有换行符也能正常工作。)

共有1个答案

印瑾瑜
2023-03-14

从Java8开始,清单写在jar名称之后:

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

Java 7
Java 8

 类似资料:
  • 通过遵循本教程,我已经成功地使用构建了我的Spring MVC项目。 我是不是漏掉了什么?

  • 我正在使用Netbeans构建一个jar。当我按f6时,项目在NetBeans中运行良好。但是,如果我进入我的/dist/文件夹并尝试运行。jar,它就像打开一个。zip一样打开它。如果我尝试从命令行运行项目,我会得到“无法找到main Class”错误。但是,如果我浏览。jar并查看META-INF/MANIFEST.MF文件,我可以看到它确实描述了其中的一个主类。

  • 问题内容: 我正在使用此方法从JAR中的文本文件读取并正确工作。 现在,我要写入文件(从文件删除一行,通过从第一个文件写入第二个文件而没有特定的行)。 我使用此代码执行此操作: 但是java.lang.IllegalArgumentException发生了: 我的文件在Classpath中。 谢谢。 问题答案: 你不能那样做。 jar本身就是文件,而不是目录。它包含Java知道如何读取的资源。但是

  • 问题内容: 我有下面的代码 执行后,文件创建成功,但创建的文件为空 那么代码有什么问题呢? 问题答案: 您必须关闭,否则不会刷新当前缓冲区。您可以直接调用该方法。 如果要关闭文件,则无需使用该方法。该可用于例如,如果一会你的程序运行和输出文件中的东西,你想在其他地方检查。

  • 我正在为我的maven项目添加一个可执行的jar测试。我已经编辑了pom文件,以使用src/main/resources中的一个主类。但是,当我尝试运行jar时,它找不到我的主类。有什么想法吗?