关于NoClassDefFoundError解决心得

本文讲述了NoClassDefFoundError和ClassNotFoundException的区别,以及在遇到初始化com.github.ltsopensource.core.support.JobUtils时的解决过程,重点在于识别包缺失问题和使用javassist依赖。

容易混淆

NoClassDefFoundError和ClassNotFoundException

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

这不是废话吗。

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

问题描述

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

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

解决过程

在这里插入图片描述

在这里插入图片描述

定位到此处

在这里插入图片描述

38行打断点

在这里插入图片描述
点击stackTrace,定位到异常处
在这里插入图片描述
发现是包了一层异常

异常处为63行

在这里插入图片描述

在doCompile处继续打断点

在这里插入图片描述

被误导的地方

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

在这里插入图片描述
在这里插入图片描述
最终发现走到了java自己的加载方法里面了。才意识到,就是包缺失。

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


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值