。由netbeans创建的jar文件不能在windows上打开
问题描述:
由于某种原因,当我在NetBeans中使用“clean and build”并尝试从dist文件夹运行它时,我的应用程序停止工作。应用程序用于从jar文件打开,但现在只闪烁,甚至不会提供任何错误消息。应用程序运行,如果我测试使用NetBeans运行F6。 Jar文件是由NetBeans创建的,所以我想清单应该没问题。。由netbeans创建的jar文件不能在windows上打开
Here's的链接jar文件...
答
- 有可能是在dist目录下的lib文件夹。如果是这样,它包含您包含的任何库的jar文件。确保是这样。您需要分发jar以及整个lib文件夹,并将它们存储在同一个文件夹中,就像Netbeans创建它们一样。
- 我希望你已经创建了一个Java应用程序项目,而不是Java类库项目。
- 当您“清理并构建”项目时,您可以检查是否正确添加了main-class属性和任何库路径。
- 你可以像
java -jar tbs.jar
那样运行它并查看响应。
答
执行终端罐子给出了这样的异常跟踪:
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:155)
at tbs.ImageLoader.loadImage(ImageLoader.java:11)
at tbs.Flag.<init>(Flag.java:21)
at tbs.Model.<init>(Model.java:58)
at tbs.GameView.<init>(GameView.java:33)
at tbs.GUI.<init>(GUI.java:36)
at tbs.Main.main(Main.java:6)
所以看起来你有这样的事情在这里:
public Image loadImage(String name) {
return new ImageIcon(getClass().getResource(name));
}
...并返回getResource()
方法null
,这导致ImageIcon
构造函数抛出异常。
在Flag.java的第21行中,您使用"images/flagNeutral.png"
作为图像字符串,但是您的jar文件包含images/flagneutral.png
(位于tbs
目录内)。看到不同?
如果它在jar外的本地系统上工作,那么您在那里使用不区分大小写的文件系统。 (Windows还是Mac?) 在jar中,以及通过HTTP和“真实”文件系统上,URL都区分大小写,这意味着您必须在文件命名时精确命名资源。
是的,通常你应该至少自己试过你的程序,并发布堆栈跟踪以及相关的代码行。
你是否在'dist'文件夹中用'java -jar“tbs.jar”'命令运行它?它需要任何外部罐子吗? – pajton 2011-03-26 23:07:10
pajton建议如果您从命令行运行它,而不是从Windows资源管理器中双击它,您可能会看到一个异常来解释问题所在。 – MeBigFatGuy 2011-03-27 01:45:22