【问题标题】:Getting icon from resources package (Java)从资源包中获取图标(Java)
【发布时间】:2014-07-08 16:46:29
【问题描述】:

我正在尝试制作一个 java 程序并有一个资源/Icon.png 的应用程序图标。我现在的代码是

ClassLoader cldr = this.getClass().getClassLoader();
URL url = cldr.getResource( "//resources//Icon.png" );
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.createImage(url);
this.setIconImage( img );

但是我得到了

获取图像时未捕获的错误:java.lang.NullPointerException

我是否正确引用了图标的位置?资源是程序中的一个包。

【问题讨论】:

  • 我认为这就是您在 java 中处理文件位置的方式。单斜杠也不起作用。
  • 使用ClassLoader加载资源时,路径不能以斜杠开头。应该是resources/Icon.png
  • 来自method's documentation:“资源的名称是标识资源的'/'分隔的路径名。”如果资源文件夹被放入二进制输出(或 JAR 文件)中,那么您正确引用它。
  • 就是这样!非常感谢。
  • 请添加解决方案作为答案。避免在 cmets 中回答问题。

标签: java icons classloader


【解决方案1】:

使用ClassLoader加载资源时,路径必须是斜杠分隔的路径,不能以斜杠开头:

resources/Icon.png

如果直接使用类(SomeClass.class.getResource(...)),则可以斜杠开头从classpath的根目录开始查找资源,也可以不斜杠开头查找资源与班级在同一个包中。

【讨论】:

    【解决方案2】:

    不确定这是否能解决问题,但请更改您的代码,以便使用 File 和 BufferedImage。如果没有,请告诉我。

    编辑:没有看到底部。使用文件而不是 URL。

    【讨论】:

    • 不!永远不要使用File 来加载资源。使用ClassLoader 是正确的方法。
    • 为什么不呢,我实际上是被教导相反的。
    • 那么 JAR 中的资源呢?
    猜你喜欢
    • 2012-07-30
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多