【发布时间】:2021-02-18 10:35:26
【问题描述】:
我开始使用slf4j 和log4j2,但我遇到了如下问题。
我在 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)
...
我的 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>
我非常简单的代码:
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");
}
}
【问题讨论】:
-
故意使用不同版本的
2.12.0和2.13.3? -
不,版本无所谓
-
如何构建应用程序以及如何运行它?
-
我只是使用intelliJ中的run功能来运行main方法(在Class Study中右键运行main())
-
除非你有一个使用 sl4j 的现有代码库,否则你真的不需要将它用于 log4j2,事实上,如果你这样做了,你就会失去 log4j2 的许多功能。见stackoverflow.com/a/41500347/3284624