java – 与Spring引导devtools相关的推土机映射异常
我遇到了一个非常奇怪的异常,我不知道如何找到原因.
经营背景: 在控制器中,首先使用dozer将goodForm转换为商品,然后调用goodsService来保存商品. GoodsForm: @Mapping("priceList") List<GoodsPriceForm> goodsPriceFormList; Goods: List<GoodsPrice> priceList; Controller: Goods goods = BeanMapper.map(goodsForm,Goods.class); goodsService.saveGoods(adminId,goods); GoodsService: goodsDao.save(goods); goods.getPriceList().forEach(p -> p.setGoodsId(goods.getId())); goodsPriceDao.save(goods.getPriceList()); 但它抛出异常: 2015-11-27 17:10:57,042 [http-nio-8081-exec-8] ERROR o.a.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.ClassCastException: com.foo.goods.model.GoodsPrice cannot be cast to com.foo.goods.model.GoodsPrice] with root cause java.lang.ClassCastException: com.foo.goods.model.GoodsPrice cannot be cast to com.foo.goods.model.GoodsPrice at com.foo.goods.service.GoodsService$$Lambda$11/310447431.accept(Unknown Source) ~[na:na] at java.util.ArrayList.forEach(ArrayList.java:1249) ~[na:1.8.0_51] at com.foo.goods.service.GoodsService.saveGoods(GoodsService.java:34) ~[classes/:na] 这个错误信息让我感到非常困惑.另外我写一个单元测试想重复这个,但失败了. GoodsForm form = new GoodsForm(); form.setGoodsPriceFormList(Lists.newArrayList(new GoodsPriceForm((byte) 1,BigDecimal.valueOf(10)),new GoodsPriceForm((byte) 2,BigDecimal.valueOf(9)),new GoodsPriceForm((byte) 3,BigDecimal.valueOf(8)))); Goods goods = BeanMapper.map(form,Goods.class); goods.getPriceList().forEach(p -> p.setGoodsId(goods.getId())); 运行此单元测试,执行正常. Controller: System.out.println("PriceList: " + goods.getPriceList().getClass().getClassLoader());//PriceList: null System.out.println(goods.getPriceList().get(0).getClass().getClassLoader()); //java.lang.ClassCastException: com.foo.goods.model.GoodsPrice cannot be cast to com.foo.goods.model.GoodsPrice 如果我生成了一个打包的jar,那么执行这个jar java -jar target/myapp.jar 在这种情况下没有上述例外. 我在pom.xml中评论了spring-boot-devtools,然后启动了应用程序,没有异常. 解决方法
我的解决方案:将META-INF / spring-devtools.properties放在resources文件夹中,并添加此内容 restart.include.dozer=/dozer-5.5.1.jar 请参阅:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-devtools-customizing-classload (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – Vaadin 7.1.1:无法加载widgetset
- Java垃圾收集器是否会停止从JNI调用创建的POSIX线
- java – JCA / JCE和PKCS#11如何一起工作?
- JSP Request.getRemoteHost()方法:获取客户端的
- java – 正在使用import some.directory.*性能更
- ArrayList和HashMap如何自己实现实例详解
- java – 为什么在从Fragment跳转到新Activity时,
- 轻松掌握java组合模式
- .net – Mono虚拟机的当前性能如何?
- Debugging to Understand Finalizer--reference