首页 > 解决方案 > javax.imageio.IIOException 读取输入文件时

问题描述

我正在尝试将 Image 设置为 JLabel。我使用了这段代码,它在 IDE 中运行良好。但是当我尝试在 dist 文件夹中运行 Executable Jar 文件时,它给了我这个错误。

javax.imageio.IIOException:无法读取输入文件!

如何解决这个问题。请问有人可以帮助我吗?提前致谢。

代码是,

ImageIcon iconPicture = new ImageIcon(ImageIO.read(new File("./src/PIC/Images/profileImage.png")));
pictureLabel.setIcon(iconPicture);

标签: javaswingembedded-resourceimageiconjavax.imageio

解决方案


您不能依赖“工作目录”与存储 Jar/类的位置相同。

ImageIcon iconPicture = new ImageIcon(ImageIO.read(new File("./src/PIC/Images/profileImage.png")));

这向我表明您正在处理一个嵌入式资源,该资源包含在类路径/Jar 文件中。在这种情况下,您应该使用加载资源Class#getResource,因为资源将无法作为 a 读取File(如果它包含在 Jar 文件中)。

所以,而不是上面的,你应该做一些更像......

ImageIcon iconPicture = new ImageIcon(ImageIO.read(getClass().getResource("/PIC/Images/profileImage.png")));

推荐阅读