log4j error java.lang.NoSuchMethodError:org.apache.log4j.spi.LoggingEvent.getTimestamp()J

log4j error java.lang.NoSuchMethodError:org.apache.log4j.spi.LoggingEvent.getTimestamp()J,java,tomcat,log4j,Java,Tomcat,Log4j,我使用的是log4j-1.2.13,slf4j-api-1.7.15 jar,slf4j-nop-1.7.15jar和java 11、tomcat 9版本。 我得到以下2个错误 java.lang.NoSuchMethodError:org.apache.log4j.spi.LoggingEvent.getTimestamp()J 无法在类org.apache.logging.log4j.core.asyc.AsyncLoggerConfig中为元素AsyncLogger调用工厂方法:java

我使用的是log4j-1.2.13slf4j-api-1.7.15 jarslf4j-nop-1.7.15jar和java 11、tomcat 9版本。 我得到以下2个错误

  • java.lang.NoSuchMethodError:org.apache.log4j.spi.LoggingEvent.getTimestamp()J

  • 无法在类org.apache.logging.log4j.core.asyc.AsyncLoggerConfig中为元素AsyncLogger调用工厂方法:java.lang.NoClassDefFoundError:com/lmax/disruptor/EventFactory java.lang.reflect.InvocationException


  • 您必须有一组不一致的日志库:

  • LoggingEvent#getTimestamp
    是在
    log4j-1.2.15
    中引入的,因此您只需升级库即可
  • org.apache.logging.log4j.core.asyc.AsyncLoggerConfig
    是来自log4j 2.x的一个类,这意味着您的类路径上至少有两个版本的log4j。该错误是由使用不存在的
    com/lmax/disruptor/EventFactory
    类的配置文件引起的

  • 您的项目中必须有其他日志依赖项(可能是
    slf4j-log4j12
    log4j-core
    ?)。如果您使用的是Gradle或Maven,请将所有项目依赖项添加到您的问题中。否则,请查找名称以
    log4j
    slf4j
    commons logging
    logback
    、…开头的其他库。我正在使用Maven和commons logging、slf4j、lo4j jars。请提问并添加
    pom.xml
    文件的内容:可能存在一些可传递的依赖项,这导致了这些问题。我们没有直接在pom.xml中添加依赖项,而是从repo将JAR下载到maven中,再次构建war,并进行构建,然后部署。问题是在ecs环境中。我只有1个版本的log4j-1.2.13。