java - 将 slf4j 与 log4j2 一起使用时无法实例化 SLF4J LoggerFactory
问题描述
我开始使用slf4j
withlog4j2
但我遇到了如下问题。我在 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.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>
推荐阅读
- scala - 用于 IO monad 的复杂 monad 转换器
- performance - API 变慢,Cassandra 节点上没有任何明显的瓶颈
- php - 子文件夹中的codeigniter,默认控制器仅使用索引功能,其他控制器也不起作用
- datagridview - 在用户控件 DataGridview 下的设计器中检索属性 Celltype
- javascript - react js中的window.onblur事件没有在android webview中被调用
- django - 无法在 django 中使用 froms.py 添加 ManyToManyFields
- pine-script - 创建自定义时间范围
- java - 在 android 10 中显示带有 IMPORTANCE_HIGH 的通知
- reactjs - 如何从redux中的对象获取先前存储的内容
- android - 必须在主线程 doInBackground 上调用 InitLoader