我有要加载的图像,但它总是给我一个input = null异常。
这是第一部分代码:

Entity e = new Entity("images/meganium.png");


这是加载图像的部分:

image = null;
    try{
        path = this.getClass().getResource(fileName);
        System.out.println(path);
        image = ImageIO.read(path);
    }catch(IOException e){
        System.out.println("Dun goofed in " + "SPrites");
    }


结构是这样的:

com/blah/bleh/Main
com/blah/bleh/images
com/blah/bleh/foo/bar/Loader Class


堆栈跟踪:

java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1362)
at net.ofn.nyc.javagentleman.src.graphic.Sprite.<init>(Sprite.java:31)
at net.ofn.nyc.javagentleman.src.ent.Entity.<init>(Entity.java:21)
at net.ofn.nyc.javagentleman.JavaGentleman.<init>(JavaGentleman.java:27null)
at net.ofn.nyc.javagentleman.JavaGentleman.main(JavaGentleman.java:23)

最佳答案

您正在使用图像资源的相对路径。使用Class.getResource(),相对路径将针对包含该类的包进行解析,因此,如果加载图像的类位于com.blah.bleh.foo.bar包中,则它将在/ com / blah /中查找该图像。 bleh / foo / bar / images / meganium.png。如果找不到指定资源,则getResource()返回null,因此找不到IllegalArgumentException。

10-04 11:22