在可运行的jar中导出图像不起作用

时间:2015-01-13 11:34:59

标签: java image file

我在java中遇到了一个奇怪的问题。我想创建一个可运行的jar: 这是我唯一的课程:

public class Launcher {

public Launcher() {
    // TODO Auto-generated constructor stub
}

public static void main(String[] args) {
    String path = Launcher.class.getResource("/1.png").getFile();
    File f = new File(path);
    JOptionPane.showMessageDialog(null,Boolean.toString(f.exists()));

}

}

正如你所看到的,它只是输出,如果它可以找到文件。 在eclipse下工作正常(返回true)。我用图片1.png创建了一个源文件夹资源。 (资源文件夹添加到构建路径中的源)

只要我将项目导出到可运行的jar并启动它,它就会返回false。 我不知道为什么。有人有想法吗? 提前致谢

编辑:我按照示例2创建了资源文件夹:Eclipse exported Runnable JAR not showing images

4 个答案:

答案 0 :(得分:2)

如果您想从.jar文件中加载资源,请使用getClass().getResource()。这将返回一个具有正确路径的URL。

Image icon = ImageIO.read(getClass().getResource("image´s path"));

要访问广告素材中的图片,请使用Class.getResource()

我通常做这样的事情:

InputStream stream = MyClass.class.getResourceAsStream("Icon.png");
if(stream == null) {
   throw new RuntimeException("Icon.png not found.");
}

try {
   return ImageIO.read(stream);
} catch (IOException e) {
   throw new RuntimeException(e);
} finally {
   try {
      stream.close();
   } catch(IOException e) { }
}

你仍然明白,请仔细阅读此链接。

Eclipse exported Runnable JAR not showing images

答案 1 :(得分:0)

因为图像不是单独的文件,而是打包在.jar中。

使用代码从流

创建图像
InputStream is=Launcher.class.getResourceAsStream("/1.png");
Image img=ImageIO.read(is);

答案 2 :(得分:0)

尝试使用它来获取图像

InputStream input = getClass().getResourceAsStream("/your image path in jar");

答案 3 :(得分:0)

两个简单的步骤:

1 - 将文件夹(图像所在的位置)添加到构建路径;

2 - 使用此:

InputStream url = this.getClass().getResourceAsStream("/load04.gif");
myImageView.setImage(new Image(url));