• IDEA导入maven项目依赖包出现omitted for conflict with 2.11.7


    原因分析:

    出现版本冲突的原因是因为由于Maven具有依赖传递性,所以当你引入一个依赖类的同时,其身后的依赖类也一起如过江之鲫纷至沓来了。

    举个例子:
      A依赖于B及C,而B又依赖于X、Y,而C依赖于X、M,则A除引B及C的依赖包下,还会引入X,Y,M的依赖包(一般情况下了,Maven可通过<scope>等若干种方式控制传递依赖)。
      这里有一个需要特别注意的,即B和C同时依赖于X,假设B依赖于X的1.0版本,而C依赖于X的2.0版本,A究竟依赖于X的1.0还是2.0版本呢? 这就看Classloader的加载顺序了,假设Classloader先加载X_1.0,而它就不会再加载X_2.0了,如果A恰恰希望使用X_2.0呢,血案就这样不期而遇了。就会出现了“omitted for conflict with…”依赖版本冲突的问题。
    ————————————————

    解决方法:
    解决依赖版本冲突的方法其实很简单,将不想要或低版本的传递依赖去除掉即可。
    比如我这个项目的maven依赖中错误如图中显示的已经很明确了,同时存在两个不同版本的依赖类“org.scala-lang:scala-library:2.11.4”与“org.scala-lang:scala-library:2.11.7”,由依赖关系可以看出,二者都是由依赖“org.apache.kafka_2.11:0.9.0.1”引入的,那么我们pom.xml文件中找到这个依赖,加入如下配置项代码,将低版本的传递依赖包去除掉就ok了。
    ————————————————

    <dependency>
            <groupId>org.codehaus.xfire</groupId>
            <artifactId>xfire-all</artifactId>
            <version>1.2.6</version>
            <!-- 去除版本不一致的传递依赖包 -->
            <exclusions>
                <exclusion>
                    <groupId>javax.activation</groupId>
                    <artifactId>activation</artifactId>
                    <version>1.0.2</version>
                </exclusion>
            </exclusions>
        </dependency>
    ————————————————
    去除掉后刷新maven即可。。。。。

  • 相关阅读:
    优秀的云架构师需要学什么技能
    dkh人力资源大数据解决方案整体架构
    大数据hadoop与spark的区别
    hadoop技术入门学习之发行版选择
    大数据开发基础知识需要掌握哪些
    智慧人社政务云平台建设方案架构案例介绍
    [项目机会]citrix 虚拟桌面对于java等高CPU占用率如何解决
    [办公自动化]无法使用江南天安usbkey 无法使用视频网站
    [学习笔记]从0到1
    [办公自动化]目录修改以及插入分页符后行间距自动变宽
  • 原文地址:https://www.cnblogs.com/zkaiw/p/12671701.html
Copyright © 2020-2023  润新知