我正在学习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创建的默认包时,程序运行正常。但是,当我创建自己的包时,程序会返回错误。
下面我有两个相同的程序,唯一的区别是一个使用默认包,一个使用我自己的名为“game”的包
如果ship.png
答案 0 :(得分: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");