没有找到合适的图片处理器
来源:8-3 商品添加之Service层的实现下
慕虎0518913
2019-01-23
老师好,我在测试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方法写错了。所以我使用了老师的代码,替换了图片文件地址和图片文件名称。还是相同的报错。
1回答
-
翔仔
2019-01-23
同学好,针对第一个问题,需要你设置断点调试一下,有可能是图片处理的jar包有问题,你在generatethumbnail方法的地方设置一个断点,看它会不会被执行两次,如果被执行两次,重新把jar删除了再引入,maven update试试
针对第二个问题,因为文件操作上面既然生成了文件并且持久化下来了,是没办法回滚的,回滚的话只能自己在catch里面写处理语句删掉文件,然后抛出runtimeexception即可
022019-01-25
相似问题