【问题标题】:Java BufferedImage throwing NullPointerExceptionJava BufferedImage 抛出 NullPointerException
【发布时间】:2016-04-12 02:03:56
【问题描述】:

我正在用 Java 制作空间射击游戏,但是当我尝试加载图像资源时,我得到一个空指针异常。除图像外,一切正常。我编码的目录错误吗?我该如何解决?

这是我的代码:

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

这是我的文件目录的截图:

【问题讨论】:

    标签: java image file bufferedimage


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我从没见过这样做的。

      试试这个

      try {
          playerImage = ImageIO.read(getClass().getClassLoader().getResourceAsStream("src/res/player.png"));
      catch(IOException e) {
      }
      

      try {
          playerImage = ImageIO.read(new File("src/res/player.png"));
      catch (IOException e) {
      }
      

      【讨论】:

      • 我试过了,还是不行。还有其他问题吗?
      • 你能告诉我们错误是什么吗?你从来没有指定问题是什么。你在用这些图片做什么?
      • 我正在将它们绘制到一个框架中。当我运行代码时,图像向我抛出了 NPE。除了图像之外的一切都正常工作。
      • 尝试从图像路径中删除“src”。您的 FileReader 设法在没有它的情况下找到它的文件。并使用第二种方法。不用担心将其作为流获取,只需使用 ImageIO.read(new File(filepath))
      • 我仍然收到错误消息。也许它是 Eclipse 中的一个小故障。
      【解决方案3】:

      Arnav Garg 发现了问题。

      当您的代码显示如下内容时: file("src/res/player.png") 该文件不存在,即 file.exists() 将返回错误

      找出java认为文件在哪里。

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

      【讨论】:

        猜你喜欢
        • 2021-01-31
        • 1970-01-01
        • 2017-09-24
        • 2017-12-25
        • 2016-05-03
        • 1970-01-01
        • 1970-01-01
        • 2014-12-22
        • 2017-08-11
        相关资源
        最近更新 更多