欢迎光临
我们一直在努力

java报错Can’t read input file,Toolkit.getDefaultToolkit().getImage(this.getClass().getResource、ImageIO.read(new File

开发GUI开发,用到了图片片调用,总出现Can’t read input file等异常。

解决方法:

首先、检查目录是否书写正确存在。

不要以为我认为是正确的,笔者作为前端开发,对相对路径、绝对路径有点过于自信了,却对错误路径没有那么深刻的认识。

只有保证了目录正确性,才能进行正确的调试。

笔者在开发过程中,将图片目录进行了重命名,这样导致目录就不存在,进而导致程序报异常。

初步接触这东东,起初以为是项目配置,或者某些应用方法不对导致的报错。所以一直在JAVA语法和用法上找问题,只有保证目录正确的前提下,进一步进行语法检查才有意义。

其次、在IDEA下开发,多模块开发时要注意(详见下一文章)

另外附上,这几天开发遇到的两种写法:

import javax.imageio.ImageIO;
import java.awt.Toolkit;

// 省略...
// 写法1:
Image titleIcon1 = Toolkit.getDefaultToolkit().getImage("src/resources/images/logo.png");
// 写法2:
Image titleIcon2 = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("/resources/images/logo.png"));
// 写法3:
try {
    Image titleIcon3 = ImageIO.read(new File("src/resources/images/logo.png"));
} catch (IOException e) {
    e.printStackTrace();
}

// 图片相对项目根目录路径为:src/resources/images/logo.png

上文中的src建在项目根目录下,如果引用文件夹与src在同一级目录,例如:temp与src同一级目录,我们需要调用temp下的图片时。可以写为:

Image titleIcon1 = Toolkit.getDefaultToolkit().getImage("temp/logo.png");  // 这里temp与src为同级目录,且都在根目录下。

如果上述方法不能解决问题,请特别注意:

要注意的一点,read的file路径是不能有中文的,java文件可能也不能放在含中文的路径中。否则的话会catch到如下错误:

javax.imageio.IIOException: Can’t read input file!
at javax.imageio.ImageIO.read(Unknown Source)

这个问题基本翻遍的互联网也没有找到答案,最终把所有的相关中文路径进行了更改,一不小心就解决了问题。扎心,只是知道开发最好不要用中文目录,这里大意了。

赞(0)
版权归原作者所有,如有侵权请告知。达维营-前端网 » java报错Can’t read input file,Toolkit.getDefaultToolkit().getImage(this.getClass().getResource、ImageIO.read(new File

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址