image Java BuffereImage引发NullPointerException
我正在用Java制作一个space shooter,但是当我尝试加载图像资源时,我得到了一个空指针异常。除了图像,一切都很好。我把目录编错了吗?我该怎么修
这是我的代码:
BufferedReader highScoreReader;
BufferedWriter highScoreWriter;
try {
playerImage = ImageIO.read(this.getClass().getResourceAsStream("src/res/player.png"));
bulletImage = ImageIO.read(this.getClass().getResourceAsStream("src/res/bullet.png"));
enemyImage = ImageIO.read(this.getClass().getResourceAsStream("src/res/enemy.png"));
highScoreReader = new BufferedReader(new FileReader("/files/HIGH_SCORE.txt"));
highScoreWriter = new BufferedWriter(new FileWriter("/files/HIGH_SCORE.txt"));
} catch (Exception e) {
e.printStackTrace();
}
以下是我的文件目录截图:
# 1 楼答案
很可能,您需要将图像复制到项目的build目录中。如果您希望将它们视为类路径资源(看起来是这样的),请确保它们位于eclipse的源文件夹中(或者,如果您使用maven或类似工具,则位于
src/main/resources
文件夹中。关键是,它们需要复制到.class
文件运行时所在的位置记住:
class.getResourceAsStream(...)
从classpath
返回内容,而不是从源路径返回# 2 楼答案
阿纳夫·加格发现了这个问题
当你的代码说:
file("src/res/player.png")
文件不在那里,即。file.exists()
将返回false找出java认为文件在哪里
尝试使用
file.getAbsolutePath()
并将其与目录结构进行比较