所以我使用带有NetBeans的swing GUI制作了这个(非常简单的)程序,然后我点击了build来制作一个jar文件.当我通过双击它来运行它时,它告诉我它找不到主类,经过检查后,我确信它肯定存在.但是,当我从命令提示符运行它时,它完美地工作.这种奇怪行为的任何容易确定的原因(如果你想要源代码,我可以在这里发布)?
NetBeans中似乎需要的东西是:
然后,当您右键单击项目并执行"清理并构建"时,jar将内置到dist子目录中.
如果这不能解决问题,这里有一个更长的故事......
双击jar文件以运行它时,操作系统就像从命令行输入的那样:
java -jar filename.jar
Run Code Online (Sandbox Code Playgroud)
(当你说它从命令行为你工作时,这就是你输入的内容吗?)
此时,Java可执行文件在名为jar的jar中查找文件META-INF/MANIFEST.MF.然后在该文件的内容中,它查找属性的值,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设置为适当的类.如果以上所有内容都签出,则双击该文件应该可以正常工作.