我有要加载的图像,但它总是给我一个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。