所以我使用带有NetBeans的swing GUI制作了这个(非常简单的)程序,然后我点击了build来制作一个jar文件。当我通过双击它来运行它时,它告诉我它找不到主类,经过检查后,我确信它肯定存在。但是,当我从命令提示符运行它时,它完美地工作。这种奇怪行为的任何容易确定的原因(如果你想要源代码,我可以在这里发布)?
答案 0 :(得分:7)
NetBeans中似乎需要的东西是:
然后,当您右键单击项目并执行“清理并构建”时,jar将内置到dist
子目录中。
如果无法解决问题,这里的故事就更长了......
当您双击一个jar文件来运行它时,操作系统的行为就像您从命令行输入了该文件一样:
java -jar filename.jar
(当你说它从命令行为你工作时,这就是你输入的内容吗?)
此时,Java可执行文件在名为META-INF/MANIFEST.MF
的jar中查找文件。然后在该文件的内容中,它查找属性Main-Class
的值。最后,它在jar中查找该名称的类,并运行其静态main(String[])
方法。
因此,如果您的jar无法运行,您可以执行以下操作来调试正在进行的操作:
cd
进入项目的dist
子目录。jar tf filename.jar
之类的命令列出其中的内容。MANIFEST.MF
文件是否正确:
cd
进入dist
目录。jar xf filename.jar META-INF/MANIFEST.MF
之类的命令提取清单。type META-INF\MANIFEST.MF
)并确保将Main-Class
设置为相应的类。如果以上所有内容都已检出,则双击文件应工作。
答案 1 :(得分:2)
您是否将包含项目设置为“主项目”?