log4j-slf4j-impl cannot be present with log4j-to-slf4j
时间: 2023-10-13 17:21:42 浏览: 36
这个错误通常发生在使用 Maven 构建 Java 项目时,是因为 log4j-slf4j-impl 和 log4j-to-slf4j两个依赖包之间存在冲突。
log4j-to-slf4j 是一个将 log4j 日志框架接口转换为 slf4j 接口的中间件,而 log4j-slf4j-impl 是一个将 slf4j 日志接口转换为 log4j 实现的中间件。这两个依赖包不能同时存在,因为它们的作用互相冲突。
要解决这个问题,可以在 pom.xml 文件中将 log4j-to-slf4j 依赖包的 scope 设置为 "provided",这样 Maven 在构建项目时就不会将该依赖包打包进去。
例如:
```
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>1.7.30</version>
<scope>provided</scope>
</dependency>
```
另外,还可以检查项目中是否有其他依赖包引入了 log4j-slf4j-impl,如果有,可以将其排除掉,例如:
```
<dependency>
<groupId>com.example</groupId>
<artifactId>example</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</exclusion>
</exclusions>
</dependency>
```