好的,我有一个奇怪的问题。我想将我的一个程序作为.jar文件运行,但是当我通过双击打开它时,我收到一条错误消息,例如“找不到主类,程序正在关闭”。我很确定我做的一切都正确,罐子应该工作。我也试过其他程序,每个程序都一样。 (我通过BlueJ创建.jar)当我通过.bat运行它们时没有问题。这里最奇怪的是:.jar已经工作了一段时间(我猜是一两个月),我不记得做了什么不同的事情。它是相同的BlueJ版本。好吧,也许Java更新了,有些东西搞砸了...我用谷歌搜索,但我找不到解决方案。 (有些人似乎有类似的问题,似乎只有他们不能运行他们的.jar;他们上传了他们,其他人说.jar运行正常。)可能是什么问题?我该如何解决?
我真的很感激这里的一些帮助。 谢谢:))
ApertureT3CH
编辑:好的伙计们,你让我不确定。 Imma在这个不合时宜的时间(凌晨1点34分)再次检查清单:PEDIT2:这是我的MANIFEST.MF 清单 - 版本:1.0 类路径: Main-Class:LocalChatClientGUI [空行] [空行]
Main类是正确的。
EDIT3:感谢hgrey:jar没有任何问题。我可以从一个bat文件运行它,实际上不应该双击jar,对吧?但是当我点击它时我得到了错误,并且通过蝙蝠它可以正常工作。
EDIT4:我终于解决了这个问题。我重新安装了JRE,现在它可以工作,虽然我看不到任何版本差异。
感谢大家!
答案 0 :(得分:9)
当java运行jar时,它将查看jar的META-INF目录中的manifest.mf文件,并在那里读取MainClass属性。如果未指定,您将收到您描述的消息。因此,尝试将正确的manifest.mf包含在jar中。生成的manifest.mf由流行的java构建工具(如Ant或Maven)支持。
答案 1 :(得分:2)
您的程序是否使用任何外部jar文件?如果是这样,您需要在清单文件和主类中设置classpath属性。
答案 2 :(得分:1)
通常,您必须指定jar文件中的哪个类具有main方法。如果你检查哪个bat文件有效,你可能会看到你缺少什么来运行它。
答案 3 :(得分:0)
答案 4 :(得分:0)
清单文本文件必须以新行或回车结束。如果最后一行没有以新行或回车结束,则不会正确解析。
答案 5 :(得分:0)
还要向清单添加一个classpath属性,并为该值添加一个点。这将告诉v.m查看类的当前目录。