java - 使用 Maven 构建时 slf4j 版本冲突

标签 java maven slf4j

我意识到我的一个项目使用 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/46053729/

相关文章:

java - 如何在java中启动三个按顺序运行的任务?

java - maven-ear-plugin 忽略模块的解包选项

scala - 如何使用sbt-proguard实现类似maven的依赖阴影?

java - 如何防止在catalina.out中重复记录到tomcat控制台?

spring-boot - 如何使用 Spring Sleuth 记录 MDC?

java - Tomcat maven 插件 - 无法加载类 "org.slf4j.impl.StaticLoggerBinder"

java - 如何将 Eclipse 的安装从 Eclipse for Java Developer 转换为 Eclipse for EE Developers?

java - 使用远程处理对象的服务 jboss 出现问题

java - 我正在尝试使用我的注册页面中的共享首选项并在另一个类上检索它,但它在 logcat 中给了我错误

java - Maven在jar文件的根目录下打包镜像