javax.imageio.IIOException: Can't read input file!完美解决

今天遇到一个问题,上图

javax.imageio.IIOException: Can't read input file!完美解决_第1张图片

这段代码主要是给图片添加水印

后来百度发现可能是图片的路径出了问题,因为是动态获取的图片地址,然后我把地址打印出来了

 

之后通过终端查看,果然没有

javax.imageio.IIOException: Can't read input file!完美解决_第2张图片

 

之后我在classes目录找到了文件

javax.imageio.IIOException: Can't read input file!完美解决_第3张图片

 

这时焕然大悟

javax.imageio.IIOException: Can't read input file!完美解决_第4张图片

 

因为我的图片文件一开始是放在main文件夹的resources文件夹中的,在文件编译时,会被放在classes文件夹中。。

然而我的测试代码是运行在test文件夹的,test文件夹中的resources文件夹中的内容会被放在test-classes文件夹。

代码中动态获取路径时是基于当前运行的代码位置,所以获取的路径为/Users/huang/IdeaProjects/o2o/target/test-classes/watermark.png,但图片被编译后放在了/Users/huang/IdeaProjects/o2o/target/classes/watermark.png中,所以报错找不到文件

 

解决方法:

我采用了比较粗暴的方式,将图片复制一份到test/resources中,编译时图片就会被放到/Users/huang/IdeaProjects/o2o/target/test-classes路径下,问题解决。

你可能感兴趣的:(日常记录)