使用java在jar文件中缓冲图像
好的,我从不同的资源中尝试了许多答案,但我的代码仍然不起作用。(我真的不明白这是怎么回事) 它是这样的,包含我的java文件的文件夹位于Desktop/code下 我有一个名为package.name的包,其中包含我试图加载的所有图像的文件夹 我需要使它成为一个jar文件,但我的程序总是说该文件无法读取,任何有用的提示将不胜感激 所以,“图像”是一个文件夹,里面有我需要的所有图片 这是我绘制图像的代码:使用java在jar文件中缓冲图像,java,file,jar,bufferedimage,Java,File,Jar,Bufferedimage,好的,我从不同的资源中尝试了许多答案,但我的代码仍然不起作用。(我真的不明白这是怎么回事) 它是这样的,包含我的java文件的文件夹位于Desktop/code下 我有一个名为package.name的包,其中包含我试图加载的所有图像的文件夹 我需要使它成为一个jar文件,但我的程序总是说该文件无法读取,任何有用的提示将不胜感激 所以,“图像”是一个文件夹,里面有我需要的所有图片 这是我绘制图像的代码: g2.drawImage(getPicture("/package.name/imag
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
对吗??(我的水晶球说你喜欢)
您应该加载不带点的图像
,并且只能像这样使用斜杠/
:
g2.drawImage(getPicture(“/your/package/name/image/”+1+”.png”)、x、y、200、200、null)代码>
编辑:您得到的是IllegalArgumentException
不是NPE-此答案仍然有效,因为原因是相同的-null
从getResourcesStream()
返回
如果您的图像
目录位于上下文的根目录中,则它位于默认
包中,您应该使用/your/package/name
并仅使用image/1.png
例如什么是异常类和消息?@BrianAgnew异常是这个java.lang.IllegalArgumentException:input==null!点是文件夹名称的一部分,我应该删除/package.name吗?对不起,您所说的上下文根是什么意思?如果您的包类似于my.app.main
,那么您的目录将类似于my/app/main
。根上下文是应用程序的顶级目录,因此它将是一个包含my
directory;)@所以如果我为你工作,接受答案,让我的代表升空;)idk我没有使用CLI编译java应用程序