双击.jar文件时出现“找不到主类”

2022-09-01 12:02:35

首先:我意识到这个问题应该很简单,很多人似乎已经经历过了。但是,似乎我的问题可能与现有帖子略有不同

我正在使用 NetBeans 来编译 Java 应用程序。构建完成后,输出将正确放入 dist\ 文件夹。jar 文件就在那里。如果我转到命令行,请导航到该文件夹,然后调用以下命令:

java-jar Prosperity.jar

一切都很好。显然,该应用程序的名称是繁荣。以下命令也工作正常:

javaw-jar Prosperity.jar

但是,双击.jar文件会给出消息:“找不到主类:”,然后给出.jar文件的路径。我已经检查了一百次META-INF文件夹是否存在于.jar文件中,并且其中存在一个清单。具有正确主类名的 MF。我还检查了主类(App.class).class文件是否存在于.jar文件中。

所以问题是:双击文件和在其上运行javaw有什么区别?它变得非常令人沮丧,它不会只是运行!

谢谢你给我的任何指导,我在这里流泪我的头发!


答案 1

也许您的文件关联搞砸了。在命令提示符下,尝试运行

ftype | find "jarfile"

在我的 64 位 Windows 7 计算机上,显示

jarfile="C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -jar "%1" %*

您也可以使用以下内容进行更改:ftype

ftype jarfile="C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -jar "%1" %*

答案 2

刚刚发现这篇文章...

如果您仅在双击jar文件时而不是在cmd启动时遇到问题,则可能是因为JRE的版本错误(6代替7)。

只需在 注册表编辑器中更改值:

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile\shell\open\command] "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -jar "%1" %*

自:

"C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

如果更新此值,应该没有问题。


注意:在Windows上的32位和64位版本之间切换:

-> "C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*将使用 64 位版本的 JRE -> 将使用 32 位版本的 JRE"C:\Program Files (x86)\Java\jre7\bin\javaw.exe" -jar "%1" %*


推荐