包冲突

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

解决

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

    结果类似如下:
  1. [INFO] +- junit:junit:jar:4.12:test
  2. [INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:test
  3. [INFO] +- org.apache.storm:storm-core:jar:1.0.2:provided
  4. [INFO] | +- com.esotericsoftware:kryo:jar:3.0.3:compile
  5. [INFO] | | \- com.esotericsoftware:minlog:jar:1.3.0:compile
  6. [INFO] | +- org.clojure:clojure:jar:1.7.0:provided
  7. [INFO] | +- com.lmax:disruptor:jar:3.3.2:provided
  8. [INFO] | +- org.apache.logging.log4j:log4j-api:jar:2.1:provided
  9. [INFO] | +- org.apache.logging.log4j:log4j-core:jar:2.1:provided
  10. [INFO] | +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.1:provided
  11. [INFO] | +- org.slf4j:log4j-over-slf4j:jar:1.6.6:provided
  12. [INFO] | +- javax.servlet:servlet-api:jar:2.5:provided
  13. [INFO] | \- org.slf4j:slf4j-api:jar:1.7.7:compile
  14. [INFO] +- com.aaa.khala:aaa-khala-insight-sdk-transfer-api:jar:1.0.0-SNAPSHOT:compile
  15. [INFO] | \- com.aaa.khala:aaa-khala-common:jar:1.0.0-SNAPSHOT:compile
  16. [INFO] | +- javax.mail:javax.mail-api:jar:1.5.5:compile
  17. [INFO] | +- cglib:cglib:jar:2.2.2:compile
  18. [INFO] | +- org.aspectj:aspectjrt:jar:1.7.4:compile
  19. [INFO] | +- org.aspectj:aspectjweaver:jar:1.7.4:runtime
  20. [INFO] | +- org.javassist:javassist:jar:3.20.0-GA:compile
  21. [INFO] | +- log4j:log4j:jar:1.2.17:compile
  22. [INFO] | +- org.slf4j:slf4j-log4j12:jar:1.7.7:compile
  23. [INFO] | +- dom4j:dom4j:jar:1.6.1:compile
  24. [INFO] | +- jaxen:jaxen:jar:1.1.6:compile
  25. [INFO] | +- commons-collections:commons-collections:jar:3.2.1:compile
  26. [INFO] | +- commons-codec:commons-codec:jar:1.9:compile
  27. [INFO] | +- commons-beanutils:commons-beanutils:jar:1.9.2:compile
  28. [INFO] | +- org.apache.commons:commons-compress:jar:1.6:compile
  29. [INFO] | | \- org.tukaani:xz:jar:1.4:compile
  1. 查到冲突包对应的依赖,在pom.xml的<dependency>中配置排除,就不会引入该包了,例如:
  1. <dependency>
  2. <groupId>com.aaa.khala</groupId>
  3. <artifactId>aaa-khala-insight-sdk-transfer-api</artifactId>
  4. <version>1.0.0-SNAPSHOT</version>
  5. <exclusions>
  6. <exclusion>
  7. <groupId>org.slf4j</groupId>
  8. <artifactId>slf4j-log4j12</artifactId>
  9. </exclusion>
  10. </exclusions>
  11. </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. [POJ1741]树上的点对 树分治

    Description 给一棵有n个节点的树,每条边都有一个长度(小于1001的正整数). 定义dist(u,v)=节点u到节点v的最短路距离. 给出一个整数k,我们称顶点对(u,v)是合法的当且仅当 ...

  2. hdu 4897 树链剖分(重轻链)

    Little Devil I Time Limit: 16000/8000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others ...

  3. 【USACO】又买饲料 单调队列dp

    题目描述 约翰开车回家,又准备顺路买点饲料了(咦?为啥要说“又”字?)回家的路程一共有 E 公里, 这一路上会经过 N 家商店,第 i 家店里有 F i 吨饲料,售价为每吨 C i 元.约翰打算买 K ...

  4. make cmake gcc 间的关系

    看了一些关于make  cmake gcc间关系的帖子,其中这一篇简单明了. 作者:辉常哥链接:https://www.zhihu.com/question/36609459/answer/89743 ...

  5. jvm(一):总体概述

    我们首先来了解一下jdk,jre,jvm的之间的关系 jvm用于运行字节码,如果我们仅仅用于运行java程序,仅部署jre即可,如果我们需要进行java开发则需要jdk环境 java结构内容: jav ...

  6. c# 复制dataset中table结构跟数据

    DataTable dt = new DataTable(); dt = ds.Tables[0].Copy();

  7. vue之生命周期

    vue的生命周期的过程提供了我们执行自定义逻辑的机会,好好理解它的生命周期,对我们很有帮助. 1.vue实例的生命周期(vue2.0) 2.生命周期描述:(参考截图) 3.例子 window.vm = ...

  8. Linux服务器之间免密登录设置

    说明: A为linux服务器a B为linux服务器b 每台linux都有ssh的服务端和客户端,linux下的ssh命令就是一个客户端 我们常用ssh协议来进行登陆或者是文件的拷贝,都需要密码 A要 ...

  9. ERP中的地区管理

    地区管理 地区管理主要实现地区数据的添加.编辑.查看.启用.禁用等功能,另外还包含地区选择控件封装. 业务功能点: 地区数据查看:地区列表树状展现,列表增加省.市.区.县.乡图标. 地区选择控件:选择 ...

  10. 导出数据子集:带where条件的exp导出

    举个例子:用select * from all_objects创建了一张表T.想要导出object_id小于5000的所有行.(1)windows下: exp userid=cms0929/cms09 ...