从资源文件夹获取图像时出错

时间:2013-08-16 23:31:15

标签: java swing javax.imageio

(首先,我很抱歉,如果有这样的一百万个问题。我已尽力而为,这让我疯了!)

我正在尝试为JButton添加一个图标,但我不断得到由ImageIO引起的IllegalArgumentException

这就是我所拥有的:

    //Other UI elements ^
    JButton X = new JButton("Clear");        
    //com.oliveira.ux is the package name
    Image img = ImageIO.read(getClass().getResource("/com.oliveira.ux/resource/gtk-clear.png"));
    Icon clear = new ImageIcon(img);
    //More UI elements

图标位于src / PACKAGE NAME / resource /下。 (我使用eclipse)。 我试图改变上面代码的位置(我在这里写的那个是我试过的最后一个)但是当我运行de .jar时,我得到的是IllegalArgumentException。有什么建议吗?

非常感谢提前

以下是完整的错误消息:

Caused by: java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(Unknown Source)
    at com.oliveira.ux.Main.<init>(Main.java:146)
    at com.oliveira.ux.Main.main(Main.java:75)
    ... 5 more

这指向我在上面编写的代码中的ImageIO部分。

1 个答案:

答案 0 :(得分:3)

路径似乎错了......

Image img = ImageIO.read(getClass().getResource("/com.oliveira.ux/resource/gtk-clear.png"));

getResource不期望包名,而是从类路径的上下文到资源的“路径”(因此路径附加到类路径元素)

像...一样的东西。

Image img = ImageIO.read(getClass().getResource("/com/oliveira/ux/resource/gtk-clear.png"));

应该给出更好的结果