java.lang.AbstractMethodError: org.slf4j.impl.JDK14LoggerAdapter.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V


java.lang.AbstractMethodError: org.slf4j.impl.JDK14LoggerAdapter.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V

錯誤原因:jar沖突

解決辦法,排除沖突jar

1、jar是否引用正確,我是到官網選擇使用的 https://logging.apache.org/log4j

具體如下:

<properties>
    <slf4j.version>1.7.25</slf4j.version>
    <log4j2.version>2.11.2</log4j2.version>
</properties>
<dependencies>
      <!--日志 log4j2 使用(log4j、sl4j、log4j2都可以使用)-->
            <!--sl4j-->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${slf4j.version}</version>
                <scope>runtime</scope>
            </dependency>
            <!--log4j2 核心包-->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
                <version>${log4j2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>${log4j2.version}</version>
            </dependency>
            <!--如果現有組件使用Log4j 1.x並且您希望將此日志記錄路由到Log4j 2,則刪除所有log4j 1.x依賴項並添加以下內容-->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-1.2-api</artifactId>
                <version>${log4j2.version}</version>
            </dependency>
            <!--如果現有組件使用Apache Commons Logging 1.x並且您希望將此日志記錄路由到Log4j 2,則添加以下內容但不刪除任何Commons Logging 1.x依賴項。-->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-jcl</artifactId>
                <version>${log4j2.version}</version>
            </dependency>
            <!--如果現有組件使用SLF4J並且您希望將此日志記錄路由到Log4j 2,則添加以下內容但不刪除任何SLF4J依賴項。-->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-slf4j-impl</artifactId>
                <version>${log4j2.version}</version>
            </dependency>
            <!--為了正確支持和處理Web應用程序的ClassLoader環境和容器生命周期,需要一個額外的模塊。該模塊僅在運行時需要。此外,如果您在OSGi環境中使用servlet,請確保您的首選版本的servlet API已經可用(例如,如果您要使用3.0,但是您還加載了2.5,請確保它們都已加載)。-->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-web</artifactId>
                <version>${log4j2.version}</version>
            </dependency>
</dependencies>

 

2、在當前項目找到那個jar包含了sl4j,如果知道就不用找

這樣就找到了

然后就排除slf4jjar就OK了

附帶簡單版log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug" monitorInterval="30">
    <!--先定義所有的appender -->
    <appenders>
        <!--這個輸出控制台的配置 -->
        <Console name="Console" target="SYSTEM_OUT">
            <!--控制台只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch) -->
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" />
            <!--這個都知道是輸出日志的格式 -->
            <PatternLayout pattern="[%-5p] %d{yyyy-MM-dd HH:mm:ss} method:%l%n%m%n"/>
        </Console>
    </appenders>
    <!--然后定義logger,只有定義了logger並引入的appender,appender才會生效 -->
    <loggers>
        <!--建立一個默認的root的logger -->
        <root level="info">
            <appender-ref ref="Console" />
        </root>
    </loggers>
</Configuration>

然后clean,compile  run項目 就OK

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM