【问题标题】:Java: getResource image, cannot be found.Java:getResource 图像,找不到。
【发布时间】:2018-06-26 06:10:49
【问题描述】:

我刚刚在 Java 中遇到了一个错误(使用 Eclipse)。我想将资源文件夹中的图像加载到应用程序中。使用以下几行:

URL url = this.getClass().getClassLoader().getResource("/resources/images/icon.png");
BufferedImage i = ImageIO.read(url);

但这会导致java.lang.IllegalArgumentException: input == null! 异常。

我的文件夹结构是:

如何访问此图像?非常感谢!

【问题讨论】:

  • 我认为您不必在请求中包含“资源”(因此:getResource("/images/icon.png");)
  • 另外,如果我的建议不起作用,我建议你下一个断点并使用评估器尝试一下
  • 不起作用,同样的问题。
  • 此时你真的需要 getClassLoader() 吗? this.getClass().getResource() 工作正常。

标签: java image path


【解决方案1】:

getResource() 如果在类路径中找不到资源,则返回 null

为了使用getResource(),您需要将资源放在类路径上。资源目录不在类路径上。在 Eclipse 中,您可以将 resources 文件夹添加到类路径中。或者在srcServer 下创建一个新包images,然后将图标移出resources 并连同源代码一起移入srcServer\images

另一种方法是使用File 加载图像,而不是将其作为类路径资源加载。

【讨论】:

    【解决方案2】:

    我认为它找不到资源的原因是由于您的语法。 getClass().getClassLoader().getResource() 接受不带前导“/”的输入,并且始终从类路径的根目录开始。 getClassLoader().getResource() 始终是绝对路径,而 getClass().getResource() 是相对路径。

    只需使用:

    URL url = this.getClass().getResource("/images/icon.png"); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-17
      • 1970-01-01
      • 2021-08-24
      • 2020-12-31
      • 2017-04-15
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多