【问题标题】:How to includes all images in jar file using eclipse如何使用 Eclipse 在 jar 文件中包含所有图像
【发布时间】:2011-09-16 09:53:35
【问题描述】:

我制作了一个 java 应用程序并将所有类捆绑在一个 jar 文件中。当我从 Eclipse 运行项目时,我的应用程序运行成功。但是当我尝试运行我的.jar 文件时,我没有得到我的应用程序使用的图标。在代码中,我从项目文件夹中的图像目录中获取我的图标。使用 jar 时如何将这些图像文件呈现给最终用户?

我正在像这样加载图像:

 final public ImageIcon iReport=new ImageIcon("images/Report.png");

我也试过了

final public ImageIcon iquit=new ImageIcon(getClass().getResource("images/quit.png"));

final public ImageIcon iquit=new ImageIcon(getClass().getResource("/images/quit.png"));

但这会导致错误:

Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)

【问题讨论】:

  • 给我们看一些代码?加载它们时如何加载它有时有效但其他无效?
  • 您应该查看如何访问代码中的图像资源。确保它是 jar 文件中可访问的相对 url!
  • 你可以看看 class.getResourceAsStream()

标签: java eclipse jar


【解决方案1】:

100% 有效

final public ImageIcon iReport = new ImageIcon(getClass().getResource("/Report.png"));

不要忘记path 中的“/”作为图像。

【讨论】:

    【解决方案2】:

    我知道这是很久以前提出的问题,但它可能会帮助其他有同样问题的人,比如我。我已经在使用 getClass().getResource("..."),但是资源没有通过 .jar 文件导出。 我通过刷新“资源”文件夹及其每个子文件夹解决了这个问题。

    【讨论】:

    • 我希望这个answer 对你有帮助:-) 更多信息可以在这个answer中找到
    【解决方案3】:

    jar 文件中的文件被视为“资源”。您需要将它们作为类路径资源访问,常规文件访问方法在那里不起作用。

    试试这个:

    final public ImageIcon iReport = (new ImageIcon(getClass().getResource("images/Report.png")));
    

    【讨论】:

      【解决方案4】:

      您需要从类路径而不是从本地磁盘文件系统中获取它。

      假设images实际上是一个包,并且这个包与当前类在同一个JAR中,那么这样做:

      final public ImageIcon iReport = 
          new ImageIcon(getClass().getResource("/images/Report.png"));
      

      【讨论】:

      • 那么路径是完全错误的。你知道什么时候需要使用前导斜杠/吗?你了解相对路径的工作原理吗?
      • 好的,谢谢,我明白了....但现在我遇到了不同的问题,使用 eclipse 一切正常,但制作 jar 后不起作用....实际上 jar 文件没有运行。
      • 你到底在哪里打电话?在JAR里面的类?您确定该图像位于名为 images 的包中吗?
      • 是的图像在包图像中,jar 文件也包含它,但我的 jar 文件没有执行....怎么可能?
      猜你喜欢
      • 2013-03-04
      • 2011-12-07
      • 2020-02-16
      • 2015-11-20
      • 1970-01-01
      • 2015-07-03
      • 1970-01-01
      • 2017-07-09
      • 2017-07-31
      相关资源
      最近更新 更多