Java 从.jar文件获取图像

Java 从.jar文件获取图像,java,image,jar,embedded-resource,Java,Image,Jar,Embedded Resource,当我在eclipse中导出一个可执行jar文件时,以及当我使用getClass().getResource()方法时,我需要获取要编译的res文件夹 当前读取图像代码 public Image loadImage(String fileName) { return new ImageIcon(fileName).getImage(); } 不起作用的代码 public Image loadImage(String fileName) { return new ImageIcon

当我在eclipse中导出一个可执行jar文件时,以及当我使用
getClass().getResource()
方法时,我需要获取要编译的res文件夹

当前读取图像代码

public Image loadImage(String fileName) {
    return new ImageIcon(fileName).getImage();
}
不起作用的代码

public Image loadImage(String fileName) {
    return new ImageIcon(getClass().getResource(fileName).getImage();
}
要么:

  • 你的路径是错误的,你应该得到一个错误消息,如果是这样,检查它,看看它实际尝试的路径,可能不是你所想的。或者调试并查看它尝试的路径,甚至只是打印它尝试的路径

  • 它不在罐子里。使用zip程序检查jar文件和/或将其重命名为在中包含zip,然后打开它以检查文件是否确实存在

我现在已经解决了这个问题-这是有效的代码

 public BufferedImage loadImage(String fileName){

    BufferedImage buff = null;
    try {
        buff = ImageIO.read(getClass().getResourceAsStream(fileName));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;
    }
    return buff;

}
fileName的值只是一个图像名,例如 BuffereImage img=loadImage(“background.png”)


谢谢大家的帮助。

好的,谢谢。我似乎无法让eclipse编译jar中的res文件夹,我需要将其添加到类路径吗?我想您正在使用文件菜单中的导出功能?在向导中,您必须包含res文件夹和/或文件和/或文件类型。是的,这就是我要做的,但当我导出可运行的jar文件时,我没有仅用于导出jar文件的选项。请尝试以下操作:右键单击res文件夹,构建路径->用作源文件夹。再次尝试导出。好的,可以了,但是res文件夹中的图像现在位于jar文件的主目录中,因此读取文件的代码是错误的代码-Image player1=loadImage(“res/player1.png”);
文件名的值是多少?罐子的结构是什么?包含这些方法的类来自哪个包?Image player1=loadImage(“res/player1.png”);引号中的位是fileNameNo的值,但我猜您在使用Eclipse时做得不对,如果您尝试访问此帖子:,这可能会帮助您,或者确实可以按照上面提到的步骤执行此代码的实际工作,我必须创建一个名为res的文件夹,在Eclipse中右键单击它,然后单击buildbath:Use As Source folder,然后代码就可以工作了,是的,我以前看过这些帖子。