首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Maven构建时slf4j版本冲突

使用Maven构建时slf4j版本冲突
EN

Stack Overflow用户
提问于 2011-03-30 03:39:10
回答 2查看 36.6K关注 0票数 21

我意识到我的一个项目使用slf4j 1.5.8,而Hibernate使用slf4j 1.6。在使用Maven构建时,它下载了这两个jars,但我猜使用的是1.5.8的类文件。因此,当我运行程序时,我得到以下错误:

代码语言:javascript
复制
SLF4J: The requested version 1.5.8 by your slf4j binding is not compatible with [1.6]

pom.xml中,我已经将

代码语言:javascript
复制
<dependencyManagement>    
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.6.1</version>
    </dependency>
</dependencyManagement>

1.5.8是依赖的一部分,所以它可以自己下载。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-30 04:03:33

正如您自己发现的那样,有两个库(Hibernate和其他一些库)在两个不同的版本中传递地导入SLF4J。不幸的是,较旧的版本正在被maven采用(在这种情况下,maven应该选择哪些依赖关系是有一些规则的)。解决方案是在导入旧版本SLF4J的依赖项中添加exclusion (此处以com.example:foo-bar为例):

代码语言:javascript
复制
<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>

如果您仍然遇到此问题,请执行以下命令:

代码语言:javascript
复制
$ mvn dependency:tree

查找1.5.8版本,并将其从所有导入它的库中排除。

票数 27
EN

Stack Overflow用户

发布于 2011-03-30 04:02:56

您可以使用以下代码排除错误的版本:

代码语言:javascript
复制
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate</artifactId>
  <version>3.2.7.ga</version>
  <exclusions>
    <exclusion>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </exclusion>
  </exclusions>
</dependency>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5477942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档