0

我正在学习用 Java 编写游戏的基础知识。出于某种原因,每次我使用 . 创建程序时ImageIcon,都会出现错误:

Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at game.Picture.<init>(Picture.java:14)
at game.Main.<init>(Main.java:11)
at game.Main.main(Main.java:7)

经过一番试验,我发现当我使用eclipse创建的默认包时,程序运行良好。但是,当我创建自己的包时,程序会返回错误。

下面我有两个相同的程序,唯一的区别是一个使用默认包,一个使用我自己的名为“游戏”的包

在此处输入图像描述

我包括了一个包资源管理器的视图,以防它的位置有问题ship.png

4

1 回答 1

2

我认为它在该位置,您应该使用“/raw/ship.png”而不是“raw/ship.png”

尝试:

   ImageIcon il = new ImageIcon(this.getClass()
                .getResource("/raw/ship.png");

在当前代码中,“raw/ship.png”将由 Java 翻译为Package_Name/raw/ship.png,在下面的示例中为game/raw/ship.png。显然,如果代码从默认包(package_name="") 运行, 则Package_Name/raw/ship.png变为/raw/ship.png并且它可以工作。

package game;

...

   ImageIcon il = new ImageIcon(this.getClass()
                .getResource("raw/ship.png");
于 2013-07-13T07:49:11.120 回答