压缩为jar时无法读取输入文件

时间:2014-07-30 04:43:49

标签: java

当我收到此错误时,我正试图在终端中运行一个jar文件:

enter image description here

我可以在我的IDE中运行此文件,但是当我将项目导出为jar时,它无法找到该文件。以下是错误指向的代码:

BufferedImage buttonIcon = ImageIO.read(new File("img/button.png"));
button = new JButton(new ImageIcon(buttonIcon));

4 个答案:

答案 0 :(得分:2)

有两个问题。

  1. 您需要将文件放入jar中。
  2. 您需要使用getResourceAsStream(...)来使用类加载器从jar加载。
  3. 要验证jar文件中的图像存在,请使用命令jar -tf jarfile.jar并查看jar中的button.png是否在预期的位置。如果不是,请考虑改变您的罐子包装。

    对于getResourceAsStream(...),有许多人已经提供了如何正确地做到这一点。看看他们的答案。

答案 1 :(得分:1)

如果您想从JAR内部读取该文件,请使用:

BufferedImage buttonIcon = ImageIO.read( getClass().getResourceAsStream("/classpath/to/my/file"));

答案 2 :(得分:1)

试试这个:

String imgPath = "img/button.png";
BufferedImage buffImage = ImageIO.read(getClass().getResourceAsStream(imgPath));

答案 3 :(得分:0)

使用以下内容:

ImageIO.read(getClass().getClassLoader().getResource(path));

确保路径不包含src文件夹(但将图像保留在实际文件夹中)

path = "image.jpg";