Java jar 文件 "no main manifest attribute"

Java jar file "no main manifest attribute"

首先,我查看了有关此主题的类似问题。我还没有找到解决方案。

我想把我一直在做的一个小项目分发给朋友和家人。问题是我不能指望他们都能 运行 .class 文件。因此,我试图生成一个 .jar 文件,我可以将其转换为 .exe 文件。然而,我 运行 遇到了一个问题。它抱怨缺少主要清单属性。经过一番谷歌搜索后,我决定尝试一下 tutorial。我正在按照教程进行操作(甚至下载了 Hello.jar 小文件),但我仍然没有得到主清单属性。

由于我是 运行宁 Windows 10,我正在使用 PowerShell 执行 运行 命令。这是我的命令 运行:

PS C:\testJarFraNettet> javac Hello.java
PS C:\testJarFraNettet> jar cmf Hello.mf Hello.jar Hello.class Hello.java
PS C:\testJarFraNettet> java -jar Hello.jar
no main manifest attribute, in Hello.jar
PS C:\testJarFraNettet>

您会注意到我也在 .jar 中包含了 .java 文件,以确保万无一失。

Hello.mf 包含:

Manifest-Version: 1.0
Main-Class: Hello

我调查了生成的 .jar 文件。在命令中指定的文件中,我找到了预期的 .\META-INF\MANIFEST.MF 文件,内容如下:

Manifest-Version: 1.0
Created-By: 17.0.1 (Eclipse Adoptium)

我从未接触过 Eclipse(我使用 VS Code),但我认为这无关紧要。 根据我在网上找到的另一篇文章,我编辑了文件以包含教程告诉我它应该包含的内容:

Manifest-Version: 1.0
Main-Class: Hello

仍然没有运气。我决定不展示我自己的代码,因为它不必要地使故障排除变得复杂,因为无论如何我都会遇到同样的错误。我还有一些障碍,比如如何添加图像文件。该项目是一个基于 GUI 的游戏。但我想这是以后的问题。

感谢您的宝贵时间!

jar cfe Hello.jar Hello Hello.class Hello.java

会为你做的。您需要将 -e 参数指向主 class 以便 jar 知道如何使其可执行。这比制作自己的清单更容易