Java:从res文件夹加载BufferedImage

时间:2014-04-13 12:03:13

标签: java classpath bufferedimage javax.imageio

我正在尝试从我的res文件夹中加载一个图像,已经是Java BuildPath的一部分。可悲的是,似乎我无法找到相关的图像,也无法找到文件的绝对路径。 我总是收到此错误消息:

Exception in thread "Thread-2" java.lang.IllegalArgumentException: input == null!
 at javax.imageio.ImageIO.read(Unknown Source)
 at schneider.twodgame.BufferedImageLoader.loadImage(BufferedImageLoader.java:14)
 at schneider.twodgame.Game.init(Game.java:64)
 at schneider.twodgame.Game.run(Game.java:99)
 at java.lang.Thread.run(Unknown Source)

以下是代码的一部分:

public class BufferedImageLoader {

private BufferedImage image;

public BufferedImage loadImage(String path) throws IOException {
    System.out.println(getClass());
    image = ImageIO.read(getClass().getResource(path));
    return image;
    }
}

这是我尝试加载图片的方法。该方法是我的主类的一部分:

public void init() {
    BufferedImageLoader loader = new BufferedImageLoader();

    try {
        spriteSheet = loader.loadImage("/res/sprite_sheet.png");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

2 个答案:

答案 0 :(得分:1)

看看here

spriteSheet = loader.loadImage("/sprite_sheet.png");

应该工作。

答案 1 :(得分:0)

目前正在查看类文件位置的.class文件夹或.jar文件:

[root folder of class files]/res/sprite_sheet.png

也许它应该在寻找:

[root folder of class files]/schneider/twodgame/res/sprite_sheet.png

在这种情况下,您应该删除前导斜杠(/)。