所以我用 NetBeans 的 swing GUI 制作了这个(非常简单的)程序,然后我点击了 build 来制作一个 jar 文件。当我通过双击运行它时,它告诉我它找不到主类,经过检查,我确定它肯定在那里。但是,当我从命令提示符运行它时,它运行良好。这种奇怪行为的任何容易确定的原因(如果你想要源代码,我可以在这里发布)?
问问题
12506 次
2 回答
7
NetBeans 中似乎需要的东西是:
- 该项目必须是主项目(通过在项目列表中右键单击它)。
- 您必须在项目属性中设置主类。(右键,属性,运行,主类。)
然后,当您右键单击您的项目并执行“清理和构建”时,将在dist
子目录中构建一个 jar。
如果这不能解决问题,这里有一个更长的故事......
当你双击一个 jar 文件来运行它时,操作系统就像你从命令行输入这个一样:
java -jar filename.jar
(当您说它从命令行为您工作时,这是您正在输入的内容吗?)
此时,Java 可执行文件会在 jar 中查找名为META-INF/MANIFEST.MF
. 然后在该文件的内容中,它会查找属性的值Main-Class
. 最后它会在你的 jar 中查找该名称的类并运行它的静态main(String[])
方法。
因此,如果您的 jar 无法运行,您可以执行以下操作来调试正在发生的事情:
- 在 NetBeans 中清理并重建您的项目。
- 仔细检查您的课程是否确实在 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
设置为适当的类。
如果上述所有检查均已完成,则双击该文件应该可以工作。
于 2012-06-15T19:58:37.187 回答
2
您是否将包含项目设置为“主项目”?
于 2012-06-15T19:18:16.107 回答