【发布时间】:2016-05-28 05:19:54
【问题描述】:
我想在我的项目中读取图像(.png 文件),并且我希望它也可以在可运行的.jar 文件中工作。所以我写了这么一小段代码:
try {
InputStream in;
in = Loader.class.getClassLoader().getResourceAsStream("buttons.png");
System.out.println(in.read() + ", Reader: " + in);
BufferedImage img = ImageIO.read(in);
System.out.println(img.getHeight());
in.close();
} catch (IOException e) {
e.printStackTrace();
}
当我运行它时,我得到以下输出:
137, Reader: java.io.BufferedInputStream@15db9742
Exception in thread "main" java.lang.NullPointerException
at test.Loader.load(Loader.java:21)
at test.MainTest.main(MainTest.java:6)
我的MainTest 只运行此代码,所以我不会在此处包含它。
我已经测试了InputStream 是否为null,您可能已经注意到了。因为它显然不是我的文件的路径必须是正确的。我的问题是:为什么ImageIO.read() 会返回null?
【问题讨论】:
-
检查
buttons.png在Loader类路径的根目录下。区分大小写,使用 7zip、WinZip 等检查 .jar 文件。 -
getResource(AsStream) 在找不到资源时会返回null
标签: java windows nullpointerexception javax.imageio