Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NullPointerException错误?_Java - Fatal编程技术网

Java NullPointerException错误?

Java NullPointerException错误?,java,Java,我试图为我的游戏背景加载一个图像,但是Java向我抛出了一个NullPointerException错误。我会评论它在哪里 主要内容: MainImageRenderer: public class MainImageRenderer extends Panel { public static Image background; public MainImageRenderer() {} public static void render() { t

我试图为我的游戏背景加载一个图像,但是Java向我抛出了一个NullPointerException错误。我会评论它在哪里

主要内容:

MainImageRenderer:

public class MainImageRenderer extends Panel {

    public static Image background;

    public MainImageRenderer() {}

    public static void render() {
        try {
            Image background = ImageIO.read(new File("/resources/background.png"));
        }
        catch(IOException ie) {}
    }

    //THIS IS THE METHOD I AM USING 
    public static void draw(Graphics g, Image img, int x, int y) {
        g.drawImage(img, x, y, null);
    }

}

我不知道是不是因为我没有把图像放在正确的地方。我正在使用Eclipse,资源文件夹与src文件夹处于同一级别。

这部分代码是错误的:

try
{
    Image background = ImageIO.read(new File("/resources/background.png"));
}
catch(IOException ie)
{ 
}
您正在创建一个局部变量
background
,此时您应该

try
{
     background = ImageIO.read(new File("/resources/background.png"));
}
catch(IOException ie)
{
}
由于您正在隐藏静态变量
background
,因此在渲染图像时,从未设置
background


正如nybbler所评论的,
g
也将是
null
,这更直接地导致了
NullPointerException
的直接问题

这部分代码是错误的:

try
{
    Image background = ImageIO.read(new File("/resources/background.png"));
}
catch(IOException ie)
{ 
}
您正在创建一个局部变量
background
,此时您应该

try
{
     background = ImageIO.read(new File("/resources/background.png"));
}
catch(IOException ie)
{
}
由于您正在隐藏静态变量
background
,因此在渲染图像时,从未设置
background


正如nybbler所评论的,
g
也将是
null
,这更直接地导致了
NullPointerException
的直接问题

删除多余的
/
,您就可以开始了

new File("/resources/background.png")
改为

   new File("resources/background.png")
顺便说一句,我推荐这个……这对你打包……很有帮助

 URL url=this.getClass().getResource("resources/background.png");
 BufferedImage img = ImageIO.read(url);
您的代码似乎有多个问题


实例对象类型在未初始化时默认为
null
。您的
g
尚未使用非null对象初始化。

删除额外的
/
,您就可以开始了

new File("/resources/background.png")
改为

   new File("resources/background.png")
顺便说一句,我推荐这个……这对你打包……很有帮助

 URL url=this.getClass().getResource("resources/background.png");
 BufferedImage img = ImageIO.read(url);
您的代码似乎有多个问题


实例对象类型在未初始化时默认为
null
g
未使用非null对象初始化。

background
为null,因为
ImageIO.read(…)
正在引发异常(您没有对此执行任何操作)

background
ImageIO.read以来为null(…)
正在引发一个异常(对此您没有做任何处理)

不要吞咽异常。调试时,你会发现
g
将为null。开始时,g将为null。尝试不要对所有内容使用静态:SDon不要吞咽异常。调试时,你会发现
g
将为null。开始时,g将为null,尝试不要对所有内容使用静态:这不是一个绝对路径吗?应该是
/resources…
不应该吗?很可能是。我在加载这样的资源时总是要仔细检查。这不是一条绝对路径吗?它应该是
/resources…
不应该吗?很可能是。我在加载这样的资源时总是要仔细检查。