6

好吧,我有一个奇怪的问题。我想将我的一个程序作为 .jar 文件运行,但是当我通过双击打开它时,我收到一条错误消息,例如“找不到主类,程序正在关闭”。我很确定我做的一切都是正确的,罐子应该可以正常工作。我还尝试了其他程序,每个程序都一样。(我正在通过 BlueJ 创建 .jar)当我通过 .bat 运行它们时没有问题。最奇怪的事情来了:.jar 已经在一段时间前工作了(我猜一两个月),我不记得做过什么不同的事情。这是相同的 BlueJ 版本。好吧,也许 Java 更新了,有些东西搞砸了……我用谷歌搜索,但找不到解决方案。(有些人似乎有类似的问题,而且似乎只有他们无法运行他们的 . 罐子的;他们上传了它们,其他人说 .jar 运行良好。)可能是什么问题?我该如何解决?

我真的很感激这里的一些帮助。谢谢 :)

孔径T3CH

编辑:好吧,伙计们,你让我不确定。在这个邪恶的时间(凌晨 1 点 34 分),我再次检查清单:P

EDIT2:这是我的 MANIFEST.MF 清单版本:1.0 类路径:主类:LocalChatClientGUI [空行] [空行]

Main 类是正确的。

EDIT3:感谢 hgrey:罐子没有问题。我可以从 bat 文件中运行它,这实际上应该与双击 jar 没有什么不同,对吧?然而,当我点击它时,我得到了错误,它通过蝙蝠工作正常。

EDIT4:我终于解决了这个问题。我重新安装了 JRE,现在它可以工作了,虽然我看不到任何版本差异。

谢谢大家!

4

6 回答 6

13

当 java 运行 jar 时,它会查看 jar 的 META-INF 目录中的 manifest.mf 文件,并在其中读取 MainClass 属性。如果未指定,您将收到您描述的消息。因此,尝试将正确的 manifest.mf 包含到 jar 中。流行的 Java 构建工具(如 Ant 或 Maven)支持生成 manifest.mf。

于 2012-04-13T23:20:10.683 回答
2

您的程序是否使用任何外部 jar 文件?如果是这样,您需要在清单文件和主类中设置类路径属性。

于 2012-04-14T01:16:24.120 回答
1

通常,您必须指定 jar 文件中的哪个类具有 main 方法。如果您检查 bat 文件是否有效,您可能会看到为了运行它而缺少的内容。

于 2012-04-13T23:18:22.760 回答
0

建议检查您的清单。

http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html

于 2012-04-13T23:22:37.860 回答
0

清单文本文件必须以换行符或回车符结尾。如果最后一行没有以新行或回车结束,则不会正确解析。

于 2012-09-03T15:29:49.573 回答
0

还要在清单中添加一个类路径属性并为该值添加一个点。这将告诉 vm 查看当前目录中的类。

于 2013-07-30T21:10:27.477 回答