常见原因
1、缺少依赖的jar包
可以通过(""),查看jar包是否加载到classpath中。
jar包不存在也能编译通过的例子:maven中jar包的scope为<scope>provided</scope>,则编译通过,但运行时发现其他地方没有引入这个依赖会报NoClassDefFoundError错误。
2、jar包冲突
可以通过maven helper查看jar包冲突问题。也可以根据mavan传递依赖的就近获胜原则手动排查。
可以通过().getClassLoader().getResource((".","/")+".class")方法查看类在哪个jar包
3、static代码块初始化失败
jvm缓存策略:类初始化失败,会把初始化失败信息缓存起来