Java 为什么制作自己的软件包会给我带来麻烦?

Java 为什么制作自己的软件包会给我带来麻烦?,java,image,nullpointerexception,embedded-resource,imageicon,Java,Image,Nullpointerexception,Embedded Resource,Imageicon,我正在学习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.ja

我正在学习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)
线程“main”java.lang.NullPointerException中的异常 位于javax.swing.ImageIcon。(未知源) 在game.Picture.(Picture.java:14) 在game.Main.(Main.java:11) 在game.Main.Main(Main.java:7) 经过一些实验,我发现当我使用eclipse创建的默认包时,程序运行良好。但是,当我创建自己的包时,程序返回一个错误

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


我包含了一个包资源管理器视图,以防
ship.png

的位置出现问题。我认为它位于该位置,您应该使用“/raw/ship.png”而不是“raw/ship.png”

尝试:

在当前代码中,“raw/ship.png”将由Java翻译成包名/raw/ship.png,在下面的示例中是游戏/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");

ii
是否不为空???我想它在该位置。尝试使用/raw/ship.png而不是raw/ship.png。在游戏示例中,它将查找/game/raw/ship.png。“谢谢您的帮助,-Steven”不要在问题中包含噪音。@BruceMartin您应该回答这个问题。@Steven:尝试执行此不编译中引用的步骤。你的意思是
.getResource(“/raw/ship.png”)
package game;

...

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