【问题标题】:.Jar file, created by netbeans doesn't open anymore on windows由 netbeans 创建的 .Jar 文件不再在 Windows 上打开
【发布时间】:2011-07-23 16:28:38
【问题描述】:

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

Here'sjar 文件的链接...

【问题讨论】:

  • 您是否在dist 文件夹中使用java -jar "tbs.jar" 命令运行它?它需要任何外部罐子吗?
  • 正如 pajton 所建议的,如果您从命令行运行它而不是从 Windows 资源管理器中双击它,您可能会看到一个解释问题所在的异常。

标签: java netbeans jar


【解决方案1】:

在终端中执行 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 是区分大小写的,这意味着您必须准确地命名资源,就像文件命名一样。


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

【讨论】:

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

    【讨论】:

      【解决方案3】:

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

      右键项目->属性->运行部分->定义主类。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-05
        • 1970-01-01
        • 1970-01-01
        • 2012-03-29
        • 1970-01-01
        • 1970-01-01
        • 2021-03-07
        • 2012-12-18
        相关资源
        最近更新 更多