Java BufferedImage 抛出 NullPointerException
Java BufferedImage throwing NullPointerException
我正在 Java 制作一个 space 射击游戏,但是当我尝试加载图像资源时,出现空指针异常。除了图像,一切正常。我编码目录错误吗?我该如何解决?
这是我的代码:
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();
}
这是我的文件目录的屏幕截图:
我从来没有见过这样做的。
试试这个
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) {
}
很可能,您需要将图像复制到项目的构建目录中。如果您希望将它们视为类路径资源(您似乎这样做),请确保它们位于 eclipse 中的源文件夹中(或者,如果您使用 maven 或类似工具,则位于 src/main/resources
文件夹中。重点是,它们当 运行.
时,需要将其复制到 .class
文件所在的位置
记住:class.getResourceAsStream(...)
returns 来自 classpath
的东西而不是来自你的源路径。
Arnav Garg 发现了问题。
当您的代码显示如下内容时:
file("src/res/player.png")
该文件不存在,即
file.exists()
会 return 假
找出 java 认为文件所在的位置。
尝试使用
file.getAbsolutePath()
并将其与您的目录结构进行比较。
我正在 Java 制作一个 space 射击游戏,但是当我尝试加载图像资源时,出现空指针异常。除了图像,一切正常。我编码目录错误吗?我该如何解决?
这是我的代码:
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();
}
这是我的文件目录的屏幕截图:
我从来没有见过这样做的。
试试这个
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) {
}
很可能,您需要将图像复制到项目的构建目录中。如果您希望将它们视为类路径资源(您似乎这样做),请确保它们位于 eclipse 中的源文件夹中(或者,如果您使用 maven 或类似工具,则位于 src/main/resources
文件夹中。重点是,它们当 运行.
.class
文件所在的位置
记住:class.getResourceAsStream(...)
returns 来自 classpath
的东西而不是来自你的源路径。
Arnav Garg 发现了问题。
当您的代码显示如下内容时:
file("src/res/player.png")
该文件不存在,即
file.exists()
会 return 假
找出 java 认为文件所在的位置。
尝试使用
file.getAbsolutePath()
并将其与您的目录结构进行比较。