NoClassDefFoundError问题排查

常见原因

1、缺少依赖的jar包

可以通过System.getPropety("lava.class.path"),查看jar包是否加载到classpath中。

jar包不存在也能编译通过的例子:maven中jar包的scope为provided,则编译通过,但运行时发现其他地方没有引入这个依赖会报NoClassDefFoundError错误。

2、jar包冲突

可以通过maven helper查看jar包冲突问题。也可以根据mavan传递依赖的就近获胜原则手动排查。

可以通过this.getClass().getClassLoader().getResource(Test.class.replace(".","/")+".class")方法查看类在哪个jar包

3、static代码块初始化失败

jvm缓存策略:类初始化失败,会把初始化失败信息缓存起来

你可能感兴趣的:(Java)