ImageIO.read getResource error

17 浏览
0 Comments

ImageIO.read getResource error

我遇到了一个奇怪的问题。这是我的代码片段:

...
public xProgressBar(xTheme theme) {
    try {
      this.update = ImageIO.read(xTheme.class.getResource("/images/" + xThemeSettings.PROGRESSBAR_IMAGES[0]));
    }
...

当我运行程序时,我收到以下错误信息:

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)

以下是文件结构:

enter image description here

正如您所见,res文件夹位于根目录下的src文件夹旁边。我已经阅读了很多类似的问题,但没有什么帮助。

0
0 Comments

(ImageIO.read getResource error)问题的原因是getResource方法无法找到文件,解决方法是将相应的文件夹(在这个例子中是res文件夹)添加到classpath中。如果文件夹不在classpath中,getResource方法返回的InputStream将始终为null

要将文件夹添加到classpath中,可以参考这里的方法。

0
0 Comments

在使用.getResource("/images/...")方法时,返回了null,因此调用了ImageIO.read(null),导致产生了IllegalArgumentException的异常。

为了使位于res文件夹中的资源能够被...getResource(...)方法找到,需要将res文件夹设置为Eclipse项目的源文件夹。

实现方法:

右击res文件夹,在弹出菜单中选择Build path -> Use as Source Folder

screenshot

然后你会注意到:

  • res文件夹会像src文件夹一样显示相同的图标。
  • res文件夹会被添加到项目的.classpath文件中。
0