好的,我尝试过来自不同资源的很多答案,但我的代码仍无效。 (我真的不明白它是如何工作的)
就像这样,包含我的java文件的文件夹在Desktop / code下 我有一个名为package.name的包,其中包含我正在尝试加载的所有图像的文件夹...
我需要将它设为jar文件,但我的程序总是说文件无法读取,任何有用的提示都将不胜感激
所以,“image”是包含我需要的所有图片的文件夹
这是我绘制图像的代码:
g2.drawImage(getPicture("/package.name/image/"+1+".png"), x, y, 200, 200, null);
我有一个缓冲图像的方法:
public BufferedImage getPicture(String filename) {
try {
File fp = new File(filename);
BufferedImage pic = ImageIO.read(getClass().getResourceAsStream(filename));
return pic;
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, "Unable to read file!", "File Error", JOptionPane.ERROR_MESSAGE);
return null;
}
}
每当我尝试在终端中运行它时,我的代码只输出消息对话框,我尝试将其编译为jar文件,它也不起作用。
答案 0 :(得分:0)
你的NullPointerException
正确吗? (我的水晶球说你这么做)
您应该加载没有点.
的图片,只能像这样斜杠/
:
g2.drawImage(getPicture("/your/package/name/image/"+1+".png"), x, y, 200, 200, null);
修改:您收到IllegalArgumentException
非NPE - 此答案仍然有效,原因相同 - null
从getResourcesAsStream()
返回。
如果您的image
目录位于上下文的根目录中,则它位于default
包中,您应该省略/your/package/name
并仅使用image/1.png