【发布时间】:2021-08-06 04:05:23
【问题描述】:
此代码仅在我运行我的项目时才有效,但如果我运行 Jar 文件,我会收到 NullPointerException。图片在 src 目录下。
try {
URL resource = Sticker.class.getResource("\\transparentSticker.png");
img = null;
this.img = ImageIO.read(Paths.get(resource.toURI()).toFile());
System.out.println("c");
} catch (IOException | URISyntaxException e) {
System.out.println("caught");
}
如果我使用此代码,则会引发 IllegalArgumentException。
InputStream input = Sticker.class.getResourceAsStream("\\transparentSticker.png");
if (input == null) {
input = Sticker.class.getClassLoader().getResourceAsStream("\\transparentSticker.png");
}
try {
img = ImageIO.read(input);
} catch (IOException e) {
e.printStackTrace();
}
如何加载图片?
【问题讨论】:
-
1) 不确定您为什么使用 Paths 类。 ImageIO.read(...) 方法将接受 URL 作为参数 2) 您是否在 .jar 文件中包含该文件?
-
getResource 和 getResourceAsStream 的参数不是文件名,而是 URL。反斜杠不是 URL 中的合法字符。你的意思可能是
"/transparentSticker.png"。另外,正如 camickr 所说,不要尝试将 URL 转换为文件;直接加载网址即可。
标签: java jar nullpointerexception inputstream