有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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();
}

以下是我的文件目录截图:

enter image description here


共 (2) 个答案

  1. # 1 楼答案

    很可能,您需要将图像复制到项目的build目录中。如果您希望将它们视为类路径资源(看起来是这样的),请确保它们位于eclipse的源文件夹中(或者,如果您使用maven或类似工具,则位于src/main/resources文件夹中。关键是,它们需要复制到.class文件运行时所在的位置

    记住:class.getResourceAsStream(...)classpath返回内容,而不是从源路径返回

  2. # 2 楼答案

    阿纳夫·加格发现了这个问题

    当你的代码说: file("src/res/player.png") 文件不在那里,即。 file.exists() 将返回false

    找出java认为文件在哪里

    尝试使用 file.getAbsolutePath() 并将其与目录结构进行比较