记一次NoClassDeffoundEror问题解决过程

背景:在对某台计算服务器进行代码修改后,发现es查询报错,抛出异常如下:

 思路:

 1.jar包冲突

      查询了对应jar的pom文件,发现只有一个es的版本jar包,不存在冲突,百思不得其解。

2.本地环境问题

     清理idea的缓存,发行问题仍然存在

最后翻阅资料,打了断点追踪异常抛出的地方,突然发现有抛出以下异常:

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.apache.logging.log4j.util.LoaderUtil.getClassLoaders()[Ljava/lang/ClassLoader;

很明显log4j的jar包冲突了,然后去解决了log4j的冲突jar包,问题修复。

结论:在初始加载 SearchSourceBuilder 时,会先加载对应的类,而类在进行加载时会初始化静态变量,就包含了Logger的初始化,因为jar包冲突导致初始化失败,所以在后续执行对应的查询方法,初始化SearchSourceBuilder 时就会报错。

posted @ 2024-08-13 10:46  Johnson_wang  阅读(18)  评论(0编辑  收藏  举报