当前位置: 首页 > 面试题库 >

使用Maven构建时slf4j版本冲突

申屠昌胤
2023-03-14
问题内容

我意识到我的一个项目使用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选择依赖项)。解决方案是exclusion在导入较旧版本的SLF4J的依赖项中添加(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版本,并将其从所有导入它的库中排除。



 类似资料:
  • 问题内容: 我有一个独立使用两个依赖项的项目:BoneCP和Hibernate。但是由于SLF4J及其版本冲突,它无法正常工作,因为BoneCP需要SLF4J 1.5,而Hibernate需要SLF4j 1.6。如您所知,在pom.xml中不可能同时具有相同依赖项的两个不同版本。所以,我该怎么办才能解决这种惊人的SLF4J副作用??? 我得到的错误是臭名昭著的: 我需要添加它,但是不允许具有两个不

  • 问:如何处理maven多项目构建的功能分支? Jenkins构建和部署这些分支以将开发人员的构建开销保持在最低限度,但开发和功能分支无法构建相同的maven版本,否则我们将面临工件和源代码不匹配的风险。 我们有一个脚本来更改子pom中的父版本和根pom中的版本。虽然这会隔离maven空间中的分支,但在合并时会导致额外的工作。 我认为nexus pro暂存功能可能会帮助我们避免这一要求,并使每个功能

  • 我已经检查得很好了,但找不到解决办法。 我的环境是Windows8.1上的Eclipse Luna32bit。我有最新的Android SDK(目前23.0.5 10月14日发布)

  • 问题内容: 我从svn下载了一个项目,现在我正尝试使用Maven进行构建(mvn全新安装…我的maven是Apache Maven 3.0.4)。不幸的是,当我尝试构建时,发生以下错误。奇怪的是它报告了一些有关Java版本1.3的信息(我认为),我当然没有在笔记本电脑上安装它。我已经设置为JDK 1.7,我的javac也在1.7版中… 请您知道问题出在哪里吗? 问题答案: 您必须像这样为maven

  • 我有一个具有以下结构的maven项目 即Project有它的pom.xml(作为pom的包)并有模块。每个模块都有一个节中,可以将其设置为“project”的工件(在根pom.xml中定义),也可以将其设置为任何其他project2/project3/projectn工件。 现在,由于这个原因,我看看如果Project1的根pom.xml设置为0.0.1-snapshot,并且如果我想创建一个版本

  • 我在maven pom.xml文件中得到这个版本冲突错误: 在将gherkin版本更新到18.0.0之后,依赖项部分得到了修复,但是在运行测试运行程序时,我得到了以下错误: