(本文只是描述导致NoClassDefFoundError错误的一个原因,其他原因不在文中表述。)
在eclipse使用ctrl+shift+t,输入异常的类名,查看是否有同包名,不同jar包下的多个类存在。
删除冲突的jar。
本人在实际使用中是commons-logging.jar与slf4j的jcl-over-slf4j.jar的LogFactory.java的冲突。
排查过程,首先查找到了冲突的两个包。
因为是maven项目,部分依赖关系已经排除了commons-logging.jar的依赖关系。
<exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions>
但是该jar依然存在于项目中,怀疑是依赖关系没有完全排除。
使用maven build的dependency:tree,查找输出内容中的commons-logging,查找该依赖的父级,添加排除依赖关系代码。