Log4J2 AppenderLoggingException NoSuchMethodError StackLocatorUtil.getCurrentStackTrace()

its*_*ion 11 java log4j2

一旦发生异常/错误并且应该被记录,我就会收到以下错误/堆栈跟踪:

org.apache.logging.log4j.core.appender.AppenderLoggingException: java.lang.NoSuchMethodError: 'java.util.Deque org.apache.logging.log4j.util.StackLocatorUtil.getCurrentStackTrace()'
   at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:165)
   at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:134)
   at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:125)
   at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:89)
   at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:675)
   at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:633)
   at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:616)
   at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:552)
   at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
   at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
   at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2205)
   at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2159)
   at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2142)
   at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2017)
   at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
   at org.apache.logging.log4j.spi.AbstractLogger.fatal(AbstractLogger.java:1063)
Run Code Online (Sandbox Code Playgroud)

接下来at是任何所谓的Logger#fatal/error(String,Throwable)

Java 11,Log4J 2.17.2(-core 和 -api),使用 Gradle 构建的项目。从 build.gradle 中删除Multi-Release: true似乎并没有解决问题(仅添加了预期的 Reflection.getCallerClass() 警告)

我缺少什么?

its*_*ion 18

结果发现一个库具有依赖项 Log4J-api 2.17。1(但不是 -core),我的 gradle 文件指定了 Log4J-core 2.17。2因此较旧的 -api 版本会覆盖最新版本。显然,从 2.17.1 到 .2,StackLocatorUtil.getCurrentStackTrace()的返回值从 更改StackDeque