请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

没有找到合适的图片处理器

老师好,我在测试productService的AddProduct方法时,junit报错“net.coobird.thumbnailator.tasks.UnsupportedFormatException: No suitable ImageReader found for source data.”但是最后junit测试通过了。 然而通过查看数据库,我发现在数据库tb_product中,生成了两条数据,只有img_addr的值不同。在经过查看生成文件后发现,这两条新增的数据中,第一条数据的img_addr并不存在,文件夹中只有符合第二条数据img_addr值的文件,以及两个子图片文件。我认为应该是程序试图创建第一个product图片时没有找到合适的图片处理器,所以报了异常。但是在重试过程中不知道为什么又成功的解析了图片文件,后又创建了两个子文件,由于创建图片最终都为成功,所以通过了junit的测试。
现在问题来了
1.为什么会出现这种问题?(先提示没有合适的图片解析器,但在后续运行的程序中又找到了合适的图片解析器,并生成了所有应有的图片)。
2.程序不是有报错回滚的么?为什么这条数据还是被创建并存储到数据库中了呢?
我已经尝试过的解决方法
最开始发现这个报错,我以为是我的testAddProduct方法写错了。所以我使用了老师的代码,替换了图片文件地址和图片文件名称。还是相同的报错。

正在回答 回答被采纳积分+3

1回答

翔仔 2019-01-23 23:22:29

同学好,针对第一个问题,需要你设置断点调试一下,有可能是图片处理的jar包有问题,你在generatethumbnail方法的地方设置一个断点,看它会不会被执行两次,如果被执行两次,重新把jar删除了再引入,maven update试试

针对第二个问题,因为文件操作上面既然生成了文件并且持久化下来了,是没办法回滚的,回滚的话只能自己在catch里面写处理语句删掉文件,然后抛出runtimeexception即可

0 回复 有任何疑惑可以回复我~
  • 提问者 慕虎0518913 #1
    老师好,经过debug后发现问题所在,原因是在ProductServiceImpl中的addThumbnail方法写了两次。之所以会报No suitable ImageReader是因为https://coding.imooc.com/learn/questiondetail/60681.html该同学所说的原因么?
    回复 有任何疑惑可以回复我~ 2019-01-24 13:38:16
  • 翔仔 回复 提问者 慕虎0518913 #2
    同学好,如果写两次确实会有这个问题,同样句柄被占用,同学可以尝试修改后试试
    回复 有任何疑惑可以回复我~ 2019-01-25 09:50:51
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号