为了账号安全,请及时绑定邮箱和手机立即绑定

javax.imageio.IIOException 读取输入文件时

javax.imageio.IIOException 读取输入文件时

qq_遁去的一_1 2021-11-17 14:36:15
我正在尝试将 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);
查看完整描述

2 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

您不能依赖“工作目录”与存储 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")));



查看完整回答
反对 回复 2021-11-17
?
忽然笑

TA贡献1806条经验 获得超5个赞

您的程序在运行时无法从给定的路径中找到图像

./src/PIC/Images/profileImage.png

这里 。指的是当前目录,当你必须运行你的程序时, . 一定不是你想要的。因此,解决问题的一种方法是使用绝对路径,这类似于

D:/work/proj1/src/PIC/Images/profileImage.png

或者

您需要根据您的项目找到当前目录,然后构建正确的相对路径。

您可以使用以下一行代码找到当前目录路径,

System.out.println(new File(".").getCanonicalPath());

找到您当前的路径,然后更正您提供的图像的相对路径。


查看完整回答
反对 回复 2021-11-17
  • 2 回答
  • 0 关注
  • 429 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信