JAR 命令不使用提供的清单
JAR Command not using supplied Manifest
不确定为什么会出现此错误,我觉得我遗漏了一些非常简单的东西。这是我在尝试遵循 this post 从命令行创建 JAR 可执行文件时面临的问题。这是我的简单测试文件:
JarExample.java:
public class JarExample {
public static void main(String[] args) {
}
}
MANIFEST.MF:
Manifest-Version: 1.0
Main-Class: JarExample
我 运行 按照以下命令构建 JAR:
javac JarExample.java
jar cfm JarExample.jar MANIFEST.MF *.class
然而,当我 运行 java -jar JarExample.jar
时,出现以下错误:
no main manifest attribute, in JarExample.jar
在 JAR 内部达到峰值,存在正确的 class 文件,但存在以下自动生成的清单 META-INF/MANIFEST.MF
:
Manifest-Version: 1.0
Created-By: 1.8.0_162 (Oracle Corporation)
那么我对 jar
命令的使用在哪里不正确?为什么它无法识别我提供的清单文件?
谢谢!
我已按照您描述的所有步骤进行操作,并且已成功创建可执行 jar 文件。
我正在使用 openjdk 11.0.11 2021-04-20
.jar 文件中生成的文件如下所示:
Manifest-Version: 1.0
Main-Class: JarExample
Created-By: 11.0.11 (Ubuntu)
所以这可能是由您的 Java 版本或使用的操作系统引起的。
在你引用的答案中,有a useful comment by David:
If you create the MANIFEST.MF file, don't forget to finish the last line
with a line break. On Windows just add an empty line at the end.
Otherwise the last attribute will not make it in the jar file. In this
special case the Main-Class attribute will be missing.
可能,这就是你的情况。因为当我删除 MANIFEST.MF
中的最后一个换行符时,我得到了与你的错误相同的错误:
no main manifest attribute, in JarExample.jar
带有最后一个换行符的 MANIFEST.MF
示例(第 3 行为空)- 运行良好
Manifest-Version: 1.0
Main-Class: JarExample
没有最后一个换行符(2 行代码)- 崩溃并出错
Manifest-Version: 1.0
Main-Class: JarExample
不确定为什么会出现此错误,我觉得我遗漏了一些非常简单的东西。这是我在尝试遵循 this post 从命令行创建 JAR 可执行文件时面临的问题。这是我的简单测试文件:
JarExample.java:
public class JarExample {
public static void main(String[] args) {
}
}
MANIFEST.MF:
Manifest-Version: 1.0
Main-Class: JarExample
我 运行 按照以下命令构建 JAR:
javac JarExample.java
jar cfm JarExample.jar MANIFEST.MF *.class
然而,当我 运行 java -jar JarExample.jar
时,出现以下错误:
no main manifest attribute, in JarExample.jar
在 JAR 内部达到峰值,存在正确的 class 文件,但存在以下自动生成的清单 META-INF/MANIFEST.MF
:
Manifest-Version: 1.0
Created-By: 1.8.0_162 (Oracle Corporation)
那么我对 jar
命令的使用在哪里不正确?为什么它无法识别我提供的清单文件?
谢谢!
我已按照您描述的所有步骤进行操作,并且已成功创建可执行 jar 文件。
我正在使用 openjdk 11.0.11 2021-04-20
.jar 文件中生成的文件如下所示:
Manifest-Version: 1.0
Main-Class: JarExample
Created-By: 11.0.11 (Ubuntu)
所以这可能是由您的 Java 版本或使用的操作系统引起的。
在你引用的答案中,有a useful comment by David:
If you create the MANIFEST.MF file, don't forget to finish the last line with a line break. On Windows just add an empty line at the end. Otherwise the last attribute will not make it in the jar file. In this special case the Main-Class attribute will be missing.
可能,这就是你的情况。因为当我删除 MANIFEST.MF
中的最后一个换行符时,我得到了与你的错误相同的错误:
no main manifest attribute, in JarExample.jar
带有最后一个换行符的 MANIFEST.MF
示例(第 3 行为空)- 运行良好
Manifest-Version: 1.0
Main-Class: JarExample
没有最后一个换行符(2 行代码)- 崩溃并出错
Manifest-Version: 1.0
Main-Class: JarExample