我意识到我的一个项目使用 slf4j 1.5.8,而 Hibernate 使用 slf4j 1.6。在使用 Maven 构建时,它会下载两个 jar,但我猜使用了 1.5.8 的类文件。所以,当我运行程序时,出现以下错误:
SLF4J: The requested version 1.5.8 by your slf4j binding is not compatible with [1.6]
在 pom.xml
我放了
<dependencyManagement>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>
</dependencyManagement>
1.5.8 是依赖项的一部分,因此需要自行下载。
最佳答案
正如您自己发现的那样,有两个库(Hibernate 和其他库)以两个不同的版本传递导入 SLF4J。不幸的是,maven 正在使用旧版本(在这种情况下,maven 应该选择哪些依赖项有一些规则)。解决方案是在导入旧版本 SLF4J 的依赖项中添加 exclusion
(com.example:foo-bar
是示例):
<dependency>
<groupId>com.example</groupId>
<artifactId>foo-bar</artifactId>
<version>1.2.3</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
如果您仍然遇到此问题,请发出:
$ mvn dependency:tree
查找 1.5.8 版本并将其从所有导入它的库中排除。
关于java - 使用 Maven 构建时 slf4j 版本冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5477942/