使用 java 的 jar 文件中的缓冲图像
Buffered Image in jar file using java
好的,我尝试了来自不同资源的许多答案,但我的代码仍然无法正常工作。 (我真的不明白它是如何工作的)
它是这样的,包含我的 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 文件,但它也不起作用。
你 NullPointerException
对吗?? (我的 crystal 球说你知道)
您应该加载没有点 .
并且只有斜线 /
的图像:
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
例如
好的,我尝试了来自不同资源的许多答案,但我的代码仍然无法正常工作。 (我真的不明白它是如何工作的)
它是这样的,包含我的 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 文件,但它也不起作用。
你 NullPointerException
对吗?? (我的 crystal 球说你知道)
您应该加载没有点 .
并且只有斜线 /
的图像:
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
例如