Java ImageIO.read getResource错误

Java ImageIO.read getResource错误,java,javax.imageio,Java,Javax.imageio,我遇到了一个奇怪的问题。以下是我的代码片段: ... public xProgressBar(xTheme theme) { try { this.update = ImageIO.read(xTheme.class.getResource("/images/" + xThemeSettings.PROGRESSBAR_IMAGES[0])); } ... 当我运行一个程序时,我得到以下错误: Exception in thread "main" java.lang

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

...
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)
以下是一个文件结构:

如您所见,res文件夹位于src文件夹的根目录下。我读过很多类似的问题,但没有任何帮助。

为了让getResource找到一个文件,本例中对应的文件夹res需要位于类路径中。如果它不在类路径中,则getResource返回的InputStream将始终为null

如何将文件夹添加到类路径。

您的呼叫。getResource/images/。。。未成功,它返回null。因此,您调用ImageIO.readnull并得到一个IllegalArgumentException

用于查找位于res文件夹中的资源 通过…getResource…,您需要使res成为Eclipse项目的源文件夹。 要实现这一点:右键单击res文件夹,在弹出菜单中选择 生成路径->用作源文件夹

你会注意到的

res将显示与src文件夹相同的图标。 res将被添加到项目的.classpath文件中。
为什么你认为xTheme.class.getResource应该在res/下找到资源?是什么让你认为这可能有效?我也尝试过在路径中添加res,但不起作用..res/images,/res/images,/res/images,/res/images。这些都不行,你没有回答我的问题。您正在java.lang.Class类型上使用名为getResource的方法。为什么不阅读它的javadoc来了解它的功能和工作原理,而不是尝试随机的东西呢?提示:它委托类加载器来加载资源。类加载器不会神奇地从任意位置加载资源。它从运行时类路径中的jar和目录中查找资源。