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

时间:2016-05-03 17:08:56

标签: java file jar bufferedimage

好的,我尝试过来自不同资源的很多答案,但我的代码仍无效。 (我真的不明白它是如何工作的)

就像这样,包含我的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文件,它也不起作用。

1 个答案:

答案 0 :(得分:0)

你的NullPointerException正确吗? (我的水晶球说你这么做)

您应该加载没有点.的图片,只能像这样斜杠/

g2.drawImage(getPicture("/your/package/name/image/"+1+".png"), x, y, 200, 200, null);

修改:您收到IllegalArgumentException非NPE - 此答案仍然有效,原因相同 - nullgetResourcesAsStream()返回。

如果您的image目录位于上下文的根目录中,则它位于default包中,您应该省略/your/package/name并仅使用image/1.png