2012-03-26 99 views
1

使用Eclipse IDE。行:getResources()返回空值

getClass().getResource("/res/bitmaps/image.png"); 

回报null。我在我的项目的根目录中创建了res文件夹。

感兴趣的代码是:

bImage = ImageIO.read(getClass().getResource("/res/bitmaps/image.png")); 

,并抛出异常:

Exception in thread "main" java.lang.IllegalArgumentException: input == null! 
    at javax.imageio.ImageIO.read(ImageIO.java:1378) 
    at com.example.game.resource.Resources._loadImage(Resources.java:31) 
    at com.example.game.GameComponent.<init>(GameComponent.java:19) 
    at com.example.game.GameFrame.<init>(GameFrame.java:8) 
    at com.example.game.GameFrame.main(GameFrame.java:13) 

任何帮助吗?

+0

什么是位图? – 2012-03-26 06:00:40

+0

你有什么目录结构? – 2012-03-26 06:01:48

+0

我的项目的根文件夹包含'src'和'res'文件夹。 'res'文件夹包含'bitmaps'文件夹,其中包含'image.png'。 – mneri 2012-03-26 06:24:19

回答

3
ImageIO.read(getClass().getResourceAsStream("res/drawable/image.png")); 

确保res文件夹位于类路径中,使用项目属性> Java build Path> Source选项卡进行验证。如果不在课程路径中,可以通过添加文件夹..按钮在右侧。

+0

已解决。解决方案是将'res'文件夹添加到构建路径,并使用字符串“/bitmaps/image.png”获取资源 – mneri 2012-03-26 06:31:54

1

你说这个资源是在“我的项目的根源” - 它是你的构建路径中的文件夹?您需要将它放在构建路径中,以便Eclipse将其复制到输出目录(默认为bin)。

+0

如何做到这一点? – mneri 2012-03-26 06:05:39

1
getClass().getResource("/res/drawable/image.png"); 

如果名字以“/”(“\ u002f”)开始,你应该给其image.png存在

+0

'res'文件夹包含'bitmaps'文件夹,其中包含'image.png'文件。 – mneri 2012-03-26 06:06:59

+0

@mneri它适用于我,我认为你有一些构建路径问题。 – 2012-03-26 06:14:33

+0

我这么认为。我的项目的根目录包含'src'文件夹和'res'文件夹。我是否可以将'res'文件夹添加到构建路径中?怎么样? – mneri 2012-03-26 06:22:34

0

的文件夹的路径,那么资源的绝对名称是'/'后面的名称部分。

否则,绝对名称是以下形式的: 程序包/名称

凡package_name是该对象以“/”取代的包名“” ( '\ u002e')。