由netbeans创建的.Jar文件不再在Windows上打开

时间:2011-03-26 22:55:59

标签: java netbeans jar

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

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

3 个答案:

答案 0 :(得分:2)

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


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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

在清理并运行之前未定义主类的典型错误。

点击项目右侧 - &gt; properties - &gt; run section - &gt;定义主类。