javax.imageio.IIOException 读取输入文件时
javax.imageio.IIOException When reading the Input File
我正在尝试将图像设置为 JLabel。我使用了这段代码,它在 IDE 中运行良好。但是当我尝试 运行 dist 文件夹中的可执行 Jar 文件时,它给了我这个错误。
javax.imageio.IIOException: Can't read input file!
如何解决该问题。
请问有人可以帮助我吗?提前致谢。
代码是,
ImageIcon iconPicture = new ImageIcon(ImageIO.read(new File("./src/PIC/Images/profileImage.png")));
pictureLabel.setIcon(iconPicture);
当 运行 无法从您给定的路径中找到图像时您的程序
./src/PIC/Images/profileImage.png
这里。指的是当前目录,当您必须 运行ning 您的程序时,.一定不是你想要的那样。因此,解决该问题的一种方法是使用绝对路径,类似于
D:/work/proj1/src/PIC/Images/profileImage.png
或者
您需要根据您的项目找到当前目录,然后构建正确的相对路径。
您可以通过以下一行代码找到当前目录路径,
System.out.println(new File(".").getCanonicalPath());
找到你当前的路径,然后修改你给的图片的相对路径。
您不能指望 "working directory" 与 Jar/classes 的存储位置相同。
ImageIcon iconPicture = new ImageIcon(ImageIO.read(new File("./src/PIC/Images/profileImage.png")));
这向我表明您正在处理一个嵌入资源,该资源包含在 classpath/Jar 文件中。在这种情况下,您应该改为使用 Class#getResource
加载资源,因为资源将无法作为 File
读取(如果它包含在 Jar 文件中)。
因此,您应该做一些更像...而不是上面的事情...
ImageIcon iconPicture = new ImageIcon(ImageIO.read(getClass().getResource("/PIC/Images/profileImage.png")));
我正在尝试将图像设置为 JLabel。我使用了这段代码,它在 IDE 中运行良好。但是当我尝试 运行 dist 文件夹中的可执行 Jar 文件时,它给了我这个错误。
javax.imageio.IIOException: Can't read input file!
如何解决该问题。 请问有人可以帮助我吗?提前致谢。
代码是,
ImageIcon iconPicture = new ImageIcon(ImageIO.read(new File("./src/PIC/Images/profileImage.png")));
pictureLabel.setIcon(iconPicture);
当 运行 无法从您给定的路径中找到图像时您的程序
./src/PIC/Images/profileImage.png
这里。指的是当前目录,当您必须 运行ning 您的程序时,.一定不是你想要的那样。因此,解决该问题的一种方法是使用绝对路径,类似于
D:/work/proj1/src/PIC/Images/profileImage.png
或者
您需要根据您的项目找到当前目录,然后构建正确的相对路径。
您可以通过以下一行代码找到当前目录路径,
System.out.println(new File(".").getCanonicalPath());
找到你当前的路径,然后修改你给的图片的相对路径。
您不能指望 "working directory" 与 Jar/classes 的存储位置相同。
ImageIcon iconPicture = new ImageIcon(ImageIO.read(new File("./src/PIC/Images/profileImage.png")));
这向我表明您正在处理一个嵌入资源,该资源包含在 classpath/Jar 文件中。在这种情况下,您应该改为使用 Class#getResource
加载资源,因为资源将无法作为 File
读取(如果它包含在 Jar 文件中)。
因此,您应该做一些更像...而不是上面的事情...
ImageIcon iconPicture = new ImageIcon(ImageIO.read(getClass().getResource("/PIC/Images/profileImage.png")));