NoClassDefFoundError和ClassNotFoundException的区别本文不做详细描述,前者是运行时,后者是编译时的。主要讲解排查过程。
Springboot项目发布为War项目运行时报错。报错的代码:
public final class BeanUtils {
private static MapperFacade a = new DefaultMapperFactory.Builder().build().getMapperFacade();
...
}
1、通过分析以为是自定义的工具包有问题,于是把代码提出来放到项目中依然有问题。
2、通过分析报错的原因,判断可能是因为依赖包的问题,发现项目中有 orika-core-1.5.0.jar这个依赖包。排除问题。
3、再通过 orika-core-1.5.0.jar的Pom文件分析发现有concurrentlinkedhashmap-lru-1.4.2.jar未下载。但是我们发布为Jar的时候确实是可以运行的。
4、结果发现运来Jar是通过Linux下的jenkins编译的,而war是通过windows编译的。基本确定问题,我们使用Jenkins编译war就正常的。
但是 大大的但是 为啥windows下的Maven管理这种依赖关系报错呢?难道是BUG。
依赖关系:
业务项目 -- 自定义工具包 -- orika-core-1.5.0.jar -- concurrentlinkedhashmap-lru-1.4.2.jar
网友评论