Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java在jar文件中缓冲图像_Java_File_Jar_Bufferedimage - Fatal编程技术网

使用java在jar文件中缓冲图像

使用java在jar文件中缓冲图像,java,file,jar,bufferedimage,Java,File,Jar,Bufferedimage,好的,我从不同的资源中尝试了许多答案,但我的代码仍然不起作用。(我真的不明白这是怎么回事) 它是这样的,包含我的java文件的文件夹位于Desktop/code下 我有一个名为package.name的包,其中包含我试图加载的所有图像的文件夹 我需要使它成为一个jar文件,但我的程序总是说该文件无法读取,任何有用的提示将不胜感激 所以,“图像”是一个文件夹,里面有我需要的所有图片 这是我绘制图像的代码: g2.drawImage(getPicture("/package.name/imag

好的,我从不同的资源中尝试了许多答案,但我的代码仍然不起作用。(我真的不明白这是怎么回事)

它是这样的,包含我的java文件的文件夹位于Desktop/code下 我有一个名为package.name的包,其中包含我试图加载的所有图像的文件夹

我需要使它成为一个jar文件,但我的程序总是说该文件无法读取,任何有用的提示将不胜感激

所以,“图像”是一个文件夹,里面有我需要的所有图片

这是我绘制图像的代码:

   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应用程序