【问题标题】:Unable to create an executable jar file and manifest.txt无法创建可执行的 jar 文件和 manifest.txt
【发布时间】:2017-08-22 20:30:24
【问题描述】:

我正在尝试创建一个可执行的 jar 文件。我有一个 Test.java 文件,运行此命令后:

javac Test.java

我现在有两个文件:Test.java 和 Test.javac

现在,为了创建我的 JAR 文件,我这样做了:

jar cvf Test.jar Test.class

但是,在执行完jar之后:

java -jar Test.jar

我收到这条消息:

no main manifest attribute, in Test.jar

然后我读到我需要一个清单文件,所以我这样做了:

jar cvfm Test.jar manifest.txt *.class

但我收到了这条消息:

java.io.FileNotFoundException: manifest.txt (No such file or directory)

现在,我有点困惑,因为我不知道自己做错了什么。我的两个问题是:

1) 如何正确创建可执行的jar文件?

2) 什么是清单文件?

编辑

我的方向结构如下:

测试/src/me/pablo/main/

在该文件夹中,我有:Test.java、Test.class、Manifest.txt 和 jar 文件。

但是,当我运行命令时,我在 Test/src/me/pablo/main/ 中执行它,因此我不必使用长地址。

【问题讨论】:

  • 你可以尝试将清单文件放在jar文件“jar cvfm manifest.txt Test.jar *.class”的前面
  • @AlexanderPetrov 我收到此错误:“java.io.IOException: invalid header field”

标签: java jar compilation


【解决方案1】:

Manifest 文件是指示应用程序入口点的存档。它必须包含在您的 jar 中。需要正确创建可执行的 Jar 文件。在此文件中,您指明哪个是您的 Main 类(具有您的 main 方法的类):

主类:MyPackage.MyClass

Here 是关于它的文档。

有一个命令可以为你创建一个 Manifest 文件:

jar cfe YourJar.jar yourPackage.YourClass yourPackage/YourClass.class

【讨论】:

  • 怎样才能成功生成?
  • 首先创建一个名为 Manifest.txt 的文本文件,其内容如下:Main-Class: MyPackage.MyClass 然后通过输入以下命令创建一个名为 MyJar.jar 的 JAR 文件:jar cfm MyJar.jar Manifest.txt MyPackage/*.class
  • 好的,创建清单文件。在第一行添加了主类。然后我运行:jar cfm MyJar.jar Manifest.txt *.class。 jar 文件仍然说没有清单文件。清单文件说: Main-Class: me.pablo.main.Test
  • 尝试执行下一条命令:jar cfe YourJar.jar yourPackage.YourClass yourPackage/YourClass.class
  • 我运行它,它说:“me.pablo.main/Test.class:没有这样的文件或目录”所以我只是在没有 yourPackage/ 的情况下运行它并构建了 jar。但是,运行时的 jar 说:无法找到或加载主类 Test.java
猜你喜欢
  • 1970-01-01
  • 2018-11-06
  • 1970-01-01
  • 2023-03-05
  • 2018-08-16
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多