我正在学习 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”的包
我包含了包资源管理器的 View ,以防 ship.png
的位置出现问题
最佳答案
我认为它在该位置,您应该使用“/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");
关于java - 为什么自己制作包裹会给我带来问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17627087/