2013-08-16 59 views
0

获取图像(首先,我很抱歉,如果有一个像这样的百万个问题。我已经尝试尽我所能,这是推动我疯了!)错误,同时从资源文件夹

我m试图给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/包装名称 /资源/。 (我使用eclipse)。 我试图在代码更改上面的位置(我写在这里的人是最后一个我想),但我得到的是,当我运行德的.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的该部分。

+0

请张贴完整的堆栈跟踪,连同任何部分“所造成”,并注明您的代码被抛出异常的语句。 –

+1

'的getClass()。getResource()方法'查找相对于当前类的位置的文件,所以如果你的类已经是com.oliveira.ux包内,那么你只需要通过它'“资源/ gtk- clear.png“'。顺便说一下,包是文件夹,所以com应该是一个文件夹,oliveira应该是一个子文件夹,等等;因此,你会做一些像com/oliveira/blah/blah。 – sgbj

+1

这是'com.oliveira.ux'假设是一个web引用或包路径参考。如果它是一个路径,它不应该用'分开.'但是'/' – MadProgrammer

回答

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")); 

应该给出一个更好的结果