java - 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);
解决方案
您不能依赖“工作目录”与存储 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")));
推荐阅读
- reactjs - 如何在使用 React Infinite Scroll Component 时永久显示 Y 滚动条?
- ios - Flutter 应用程序未在 IOS 模拟器上运行或构建
- server - AEDES 服务器未连接到客户端
- javascript - 需要帮助在 Id 内的类内查找文本
- matlab - Matlab 2.5D Delaunay三角剖分顶点法线
- javascript - 使用 JavaScript 在数组中均匀分布 2 个不同的值
- cordova - 离子cordova平台添加android不工作并抛出package.json错误
- azerothcore - 编译时出错:`identifier not found`(代码 C3861)
- angular - 属性不存在于类型类和组件角度
- python - python pandas - 检查列中的部分字符串是否存在于其他列中