我想在我的项目中读取图像(.png
文件),并且我希望它在可运行的.jar
文件中工作。所以我写了这一小段代码:Java ImageIO.read()返回null
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: [email protected]
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 – MadProgrammer