> 技术文档 > 解决 NoSuchMethodError 问题:升级 Log4j 版本,exception is java.lang.NoSuchMethodError: org.apache.logging.log_java.lang.nosuchmethoderror: \'org.apache.logging.l

解决 NoSuchMethodError 问题:升级 Log4j 版本,exception is java.lang.NoSuchMethodError: org.apache.logging.log_java.lang.nosuchmethoderror: \'org.apache.logging.l


遇到的问题:

在开发过程中,我们常常会遇到各种各样的错误,其中一些错误可能由于第三方库的版本不兼容导致。最近我在开发一个 Spring Cloud 项目时遇到了一种异常:
当我点击导出的时候,给我爆这个错误,结果查了一下告诉我是版本的原因

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.apache.logging.log4j.Logger.atDebug()Lorg/apache/logging/log4j/LogBuilder;

具体错误如下图:

该错误的根本原因是由于 Log4j 的版本不兼容,导致程序在运行时无法找到方法 atDebug()。经过一番排查,我找到了升级 Log4j 版本的解决方案,下面分享一下我的解决过程和思路。

错误解析

NoSuchMethodError 是指在运行时 Java 虚拟机无法找到指定方法的错误。根据异常信息中的 org.apache.logging.log4j.Logger.atDebug() 方法,我们可以看到该问题与 Log4j 日志库的版本有关。具体来说,Log4j 2.x 版本支持 Logger.atDebug() 方法,而在项目中使用的版本可能是 1.x 或是一个较旧的版本,导致缺少该方法。

解决方案

根据 Log4j 官方文档和错误信息,我们可