我创建了一个从包装中获取图像的对象,然后稍后将其绘制在屏幕上。当我在netbeans中运行代码时,它可以正常工作。在netbeans之外,我得到一个空指针异常错误。
这是我的代码。我使用println部分来查看“ frog”是否等于null。当运行时说它等于“ /images/upFrogStill.png”,所以我不确定为什么空指针异常。
错误在“ ImageIcon ii ...”行上。
public class Frog extends Sprite implements Commons {
String frog = "/images/upFrogStill.png";
public Frog() {
System.out.println("frog = " + frog);
ImageIcon ii = new ImageIcon(this.getClass().getResource(frog));
image = ii.getImage();
width = image.getWidth(null);
height = image.getHeight(null);
resetState();
}
void resetState() {
if(frog != null){
frog = "/images/upFrogStill.png";
x = 185;
y = 397;
}}
}
最佳答案
有很高的可能性ImageIcon ii = new ImageIcon(this.getClass().getResource(frog));
返回null,因为它找不到资源。
如果您在Netbeans之外运行,请确保将文件包括在类路径中。
ClassLoader.getResource is "absolute";
Class.getResource相对于类的包,除非您
给它加上一个“ /”前缀。
希望这可以帮助。