没有绝对路径时无法加载图像

时间:2014-05-05 23:13:51

标签: java image swing ioexception

我试图在我的swing应用程序中显示图像,如果没有绝对文件寻址,似乎无法这样做。这是一个问题,因为我需要能够将此程序提供给其他人使用,并且不能只将它解决到我的计算机上。加载图像的代码如下:

public void loadImage(){
    try{
        BufferedImage img = ImageIO.read(new File("mock logo 128x128.png"));
        logoImage = new JLabel(new ImageIcon(img));
    }
    catch(IOException e){
        System.out.println("Logo not found");
        e.printStackTrace();
    }
}

我确定该文件位于src文件夹中,所以我知道这不是问题所在。如果我设置这样的代码:

public void loadImage(){
    try{
        BufferedImage img = ImageIO.read(new File("C:\\Users\\Dan\\Documents\\EXSoft\\ExSoft Workspace\\Septic Calculator Alpha\\src\\mock logo 128x128.png"));
        logoImage = new JLabel(new ImageIcon(img));
    }
    catch(IOException e){
        System.out.println("Logo not found");
        e.printStackTrace();
    }
}

一切都很完美。但如前所述,这不是一个可接受的解决方案。

1 个答案:

答案 0 :(得分:1)

您将文件放在src文件夹中,因此将其打包为应用程序的一部分。它不在您的应用二进制文件之外因此,您必须使用ClassLoader#getResourceAsStream

示例:

    BufferedImage img = ImageIO.read(YourClass.class.getClassLoader().getResourceAsStream("mock logo 128x128.png"));