关于NoClassDefFoundError解决心得

容易混淆

NoClassDefFoundError和ClassNotFoundException

NoClassDefFoundError是引用异常,大概率是运行中找不到类的情况,也可能是其他情况。
ClassNotFoundException是类找不到,大概率是包引入问题。也有概率是被手动抛出来的。

这不是废话吗。

哈哈,提供一个思路。可以先按照这样排查。如果不是再详细排查

问题描述

Could not initialize class com.github.ltsopensource.core.support.JobUtils

此处就是初始化发生的异常,在静态块内。

解决过程

关于NoClassDefFoundError解决心得_第1张图片

关于NoClassDefFoundError解决心得_第2张图片

定位到此处

关于NoClassDefFoundError解决心得_第3张图片

38行打断点

关于NoClassDefFoundError解决心得_第4张图片
点击stackTrace,定位到异常处
关于NoClassDefFoundError解决心得_第5张图片
发现是包了一层异常

异常处为63行

关于NoClassDefFoundError解决心得_第6张图片

在doCompile处继续打断点

关于NoClassDefFoundError解决心得_第7张图片

被误导的地方

此处我还以为是初始化的问题。被之前JobUtil误导了,认为是static出了问题
ClassPool pool = new ClassPool(true);
加上IDEA没有报红,于是朝着错误的地方找了好久。在static块打断点,一直没有走进去。于是继续追踪。

关于NoClassDefFoundError解决心得_第8张图片
关于NoClassDefFoundError解决心得_第9张图片
最终发现走到了java自己的加载方法里面了。才意识到,就是包缺失。

于是引入包,自此问题解决


	<dependency>
        <groupId>org.javassistgroupId>
        <artifactId>javassistartifactId>
        <version>${javassist.version}version>
    dependency>

你可能感兴趣的:(java)