简体   繁体   English

将 slf4j 与 log4j2 一起使用时,无法实例化 SLF4J LoggerFactory

[英]Failed to instantiate SLF4J LoggerFactory when using slf4j with log4j2

I'm starting to use slf4j with log4j2 but I got the problem as below.我开始将slf4jlog4j2一起使用,但我遇到了如下问题。 What am I wrong or lack somethings of from the pom file?我有什么问题或缺少 pom 文件中的某些内容?

Failed to instantiate SLF4J LoggerFactory

Reported exception:

java.lang.NoClassDefFoundError: org/apache/logging/log4j/spi/AbstractLoggerAdapter

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(ClassLoader.java:763)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)

at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)

at java.net.URLClassLoader.access$100(URLClassLoader.java:74)

...

My pom.xml:我的 pom.xml:

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.30</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.12.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.13.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.13.3</version>
    </dependency>

</dependencies>

My very simple code:我非常简单的代码:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Study {

    static Logger LOGGER = LoggerFactory.getLogger(Study.class);
    public static void main(String... args) {
        LOGGER.info("hello world");
    }
}

Try to use the same version for all libs from one groupId:尝试对来自一个 groupId 的所有库使用相同的版本:

...
<dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.13.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.13.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.13.3</version>
    </dependency>
...

Also, you can try running without org.slf4j dependency.此外,您可以尝试在没有org.slf4j依赖的情况下运行。 Run mvn clean install before the start.在开始之前运行mvn clean install

I don't know what is the reason but if I use 2.11.2, it works我不知道是什么原因,但如果我使用 2.11.2,它可以工作

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.30</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.11.2</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.11.2</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.11.2</version>
</dependency>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM