2011-03-26 74 views
0

由于某种原因,当我在NetBeans中使用“clean and build”并尝试从dist文件夹运行它时,我的应用程序停止工作。应用程序用于从jar文件打开,但现在只闪烁,甚至不会提供任何错误消息。应用程序运行,如果我测试使用NetBeans运行F6。 Jar文件是由NetBeans创建的,所以我想清单应该没问题。。由netbeans创建的jar文件不能在windows上打开

Here's的链接jar文件...

+0

你是否在'dist'文件夹中用'java -jar“tbs.jar”'命令运行它?它需要任何外部罐子吗? – pajton 2011-03-26 23:07:10

+0

pajton建议如果您从命令行运行它,而不是从Windows资源管理器中双击它,您可能会看到一个异常来解释问题所在。 – MeBigFatGuy 2011-03-27 01:45:22

回答

0
  • 有可能是在dist目录下的lib文件夹。如果是这样,它包含您包含的任何库的jar文件。确保是这样。您需要分发jar以及整个lib文件夹,并将它们存储在同一个文件夹中,就像Netbeans创建它们一样。
  • 我希望你已经创建了一个Java应用程序项目,而不是Java类库项目。
  • 当您“清理并构建”项目时,您可以检查是否正确添加了main-class属性和任何库路径。
  • 你可以像java -jar tbs.jar那样运行它并查看响应。
2

执行终端罐子给出了这样的异常跟踪:

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都区分大小写,这意味着您必须在文件命名时精确命名资源。


是的,通常你应该至少自己试过你的程序,并发布堆栈跟踪以及相关的代码行。