包冲突

  1. 使用maven管理项目时可能会遇到包冲突的情况比如:log4j-over-slf4j.jar 和 slf4j-log4j12.jar这两个包同时一起运行时就会有问题。
  2. 这种冲突可能是显式依赖导致,也可能是隐式依赖导致。
    • 显式依赖,直接可以从pom.xml文件的<dependency>中看到两个冲突包的引用。
    • 隐式依赖,在pom.xml的<dependency>无法看到冲突的包,而是由<dependency>引入的包间接引入的。

解决

  1. 先确认哪些依赖间接引入了包。使用mvn dependency:tree查看整个项目的依赖树,这里能看到所有的依赖,包括间接依赖。

    结果类似如下:
[INFO] +- junit:junit:jar:4.12:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- org.apache.storm:storm-core:jar:1.0.2:provided
[INFO] |  +- com.esotericsoftware:kryo:jar:3.0.3:compile
[INFO] |  |  \- com.esotericsoftware:minlog:jar:1.3.0:compile
[INFO] |  +- org.clojure:clojure:jar:1.7.0:provided
[INFO] |  +- com.lmax:disruptor:jar:3.3.2:provided
[INFO] |  +- org.apache.logging.log4j:log4j-api:jar:2.1:provided
[INFO] |  +- org.apache.logging.log4j:log4j-core:jar:2.1:provided
[INFO] |  +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.1:provided
[INFO] |  +- org.slf4j:log4j-over-slf4j:jar:1.6.6:provided
[INFO] |  +- javax.servlet:servlet-api:jar:2.5:provided
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.7:compile
[INFO] +- com.aaa.khala:aaa-khala-insight-sdk-transfer-api:jar:1.0.0-SNAPSHOT:compile
[INFO] |  \- com.aaa.khala:aaa-khala-common:jar:1.0.0-SNAPSHOT:compile
[INFO] |     +- javax.mail:javax.mail-api:jar:1.5.5:compile
[INFO] |     +- cglib:cglib:jar:2.2.2:compile
[INFO] |     +- org.aspectj:aspectjrt:jar:1.7.4:compile
[INFO] |     +- org.aspectj:aspectjweaver:jar:1.7.4:runtime
[INFO] |     +- org.javassist:javassist:jar:3.20.0-GA:compile
[INFO] |     +- log4j:log4j:jar:1.2.17:compile
[INFO] |     +- org.slf4j:slf4j-log4j12:jar:1.7.7:compile
[INFO] |     +- dom4j:dom4j:jar:1.6.1:compile
[INFO] |     +- jaxen:jaxen:jar:1.1.6:compile
[INFO] |     +- commons-collections:commons-collections:jar:3.2.1:compile
[INFO] |     +- commons-codec:commons-codec:jar:1.9:compile
[INFO] |     +- commons-beanutils:commons-beanutils:jar:1.9.2:compile
[INFO] |     +- org.apache.commons:commons-compress:jar:1.6:compile
[INFO] |     |  \- org.tukaani:xz:jar:1.4:compile
  1. 查到冲突包对应的依赖,在pom.xml的<dependency>中配置排除,就不会引入该包了,例如:
<dependency>
    <groupId>com.aaa.khala</groupId>
    <artifactId>aaa-khala-insight-sdk-transfer-api</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>   

maven隐式依赖引起的包冲突的更多相关文章

  1. 170525、解决maven隐式依赖包版本问题

    今天在使用dubbo2.5.3版本的时候,启动项目的时候发现一个问题,tomcat启动一直报错 Caused by: java.lang.IllegalStateException: Context ...

  2. 【转】maven导出项目依赖的jar包

    本文转自:http://my.oschina.net/cloudcoder/blog/212648 一.导出到默认目录 targed/dependency 从Maven项目中导出项目依赖的jar包:进 ...

  3. Maven导出Project依赖的jar包

    Maven导出Project依赖的jar包 从Maven仓库中导出jar包: mvn dependency:copy-dependencies 会导出到Project的targed/dependenc ...

  4. eclipse maven 导出项目依赖的jar包

    转自:https://blog.csdn.net/andyliulin/article/details/46544555 一.导出到默认目录 targed/dependency 从Maven项目中导出 ...

  5. maven导出项目依赖的jar包

    摘要: 在进行项目部署时,需要将maven项目所依赖的jar导出到指定目录,本文讲解如何导出项目依赖的jar包 一.导出到默认目录 targed/dependency 从Maven项目中导出项目依赖的 ...

  6. 正确配置jstl的maven依赖,jar包冲突的问题终于解决啦

    困扰了两天的问题,非常头疼,今天终于有了解决思路了,说到底,还是对maven不够了解吧.总是抱怨maven不好用,出现各种无厘头的问题,原来这些都是归于对它不够了解不够熟悉,它提供了很好的解决思路,只 ...

  7. maven中把依赖的JAR包一起打包(转)

    转自:http://lvjun106.iteye.com/blog/1849803 这里所用到的MAVEN-PLUGIN是MAVNE-ASSEMBLY-PLUGIN 官方网站是:http://mave ...

  8. maven项目导出依赖的Jar包以及项目本身以jar包形式导出详细教程

    一.maven项目已jar包形式导出 1.首先右键项目,选择Export 2.选择好项目,设置导出路径和jar名字即可: 二.导出maven项目所依赖的所有jar包 1.右键项目,选择Export 2 ...

  9. 解决maven无法下载依赖的jar包的问题

    背景: 公司内部有搭建maven私服,自己做了个核心jar包,一开始是xxx-core.1.0.0.SNAPSHOT版本,是本地和项目环境都可以正常使用的.为支持上线,发布稳定版本,xxx-core. ...

随机推荐

  1. [SDOI2008]Sue的小球

    题目描述 Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当一个海盗,而是要收集空中漂浮的彩蛋,Sue有一 ...

  2. 控制公司 Controlling Companies

    题目描述 有些公司是其他公司的部分拥有者,因为他们获得了其他公司发行的股票的一部分.(此处略去一句废话)据说,如果至少满足了以下三个条件之一,公司A就可以控制公司B了: 公司A = 公司B. 公司A拥 ...

  3. ●CodeForces 549F Yura and Developers

    题链: http://codeforces.com/problemset/problem/549/F题解: 分治,链表. 考虑对于一个区间[L,R],其最大值在p位置, 那么答案的贡献就可以分为3部分 ...

  4. 【NOIP2014TG】solution

    链接:https://www.luogu.org/problem/lists?name=&orderitem=pid&tag=83|31 D1T1(rps) 题意:给你一个周期,以及胜 ...

  5. 【网络流】【BZOJ1006】【SCOI2007】蜥蜴

    学弟@lher在周末训练赛中出的题目的原题(这个人拿省选题来当作提高组模拟,太丧了...) 题意简析:看题目:) 解题思路:题目显然是最大流. 首先拆点将点权变为边权,然后按照题意对于所有有跳板的点向 ...

  6. hdu3340 线段树+多边形

    Rain in ACStar Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  7. Python基础学习(第三周)

    集合的操作 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之间的交集,差集,并集等关系 集合的写法 list_1 = set([ ...

  8. glusterfs 4.0.1 api 分析笔记1

    一般来说,我们写个客户端程序大概的样子是这样的: /* glfs_example.c */ // gcc -o glfs_example glfs_example.c -L /usr/lib64/ - ...

  9. Java 实现32位MD5加密

    MD5介绍[链接] Java代码实现 public class Md5Util { private String Md5Util(String s) { try { MessageDigest md ...

  10. 【SpringMVC】<context:include-filter>和<context:exclude-filter>使用时要注意的地方

    http://jinnianshilongnian.iteye.com/blog/1762632 http://blog.51cto.com/wenshengzhu/1700340 http://ww ...