zoukankan      html  css  js  c++  java
  • 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即可。。。。。

  • 相关阅读:
    消息中间件(一)MQ详解及四大MQ比较
    WebSocket 详解教程
    Nginx 简易教程
    排序七 归并排序
    排序五 简单选择排序
    排序四 希尔排序
    排序二 快速排序
    排序一 冒泡排序
    [算法题] 人民币大小写转换(阿拉伯数字和汉字转换)
    Linux编程 18 安装软件程序(yum工具对软件包安装,删除,更新介绍)
  • 原文地址:https://www.cnblogs.com/zkaiw/p/12671701.html
Copyright © 2011-2022 走看看