Maven dependency 包冲突解决方案

原创 2013年12月05日 11:59:00

在项目中加入依赖包后运行过程中出现包冲突问题。解决方案:

1. 在cmd环境下,输入如下命令:mvn dependency:tree,根据jar包的依赖树,通过依赖树找到冲突包的不同版本。如下所示:

发现 hbase 依赖包 

org.slf4j:slf4j-api:jar:1.4.3
和storm 依赖包
 org.slf4j:slf4j-log4j12:jar

这两个包在项目中是有冲突的



[INFO] +- org.apache.hbase:hbase:jar:0.94.6:compile
[INFO] |  +- com.yammer.metrics:metrics-core:jar:2.1.2:compile
[INFO] |  +- commons-cli:commons-cli:jar:1.2:compile
[INFO] |  +- org.mortbay.jetty:jsp-2.1:jar:6.1.14:compile
[INFO] |  +- org.mortbay.jetty:jsp-api-2.1:jar:6.1.14:compile
[INFO] |  +- org.mortbay.jetty:servlet-api-2.5:jar:6.1.14:compile
[INFO] |  +- org.codehaus.jackson:jackson-core-asl:jar:1.8.8:compile
[INFO] |  +- org.codehaus.jackson:jackson-mapper-asl:jar:1.8.8:compile
[INFO] |  +- org.codehaus.jackson:jackson-jaxrs:jar:1.8.8:compile
[INFO] |  +- org.codehaus.jackson:jackson-xc:jar:1.8.8:compile
[INFO] |  +- org.slf4j:slf4j-api:jar:1.4.3:compile
[INFO] |  +- tomcat:jasper-compiler:jar:5.5.23:compile


[INFO] +- storm:storm:jar:0.8.2:provided
[INFO] |  +- org.clojure:clojure:jar:1.4.0:provided
[INFO] |  +- commons-io:commons-io:jar:1.4:compile
[INFO] |  +- org.apache.commons:commons-exec:jar:1.1:provided
[INFO] |  +- storm:libthrift7:jar:0.7.0:provided
[INFO] |  |  \- javax.servlet:servlet-api:jar:2.5:provided
[INFO] |  +- clj-time:clj-time:jar:0.4.1:provided
[INFO] |  |  \- joda-time:joda-time:jar:2.0:provided
[INFO] |  +- log4j:log4j:jar:1.2.16:compile
[INFO] |  +- com.netflix.curator:curator-framework:jar:1.0.1:provided
[INFO] |  |  \- com.netflix.curator:curator-client:jar:1.0.1:provided
[INFO] |  +- backtype:jzmq:jar:2.1.0:provided
[INFO] |  +- com.googlecode.json-simple:json-simple:jar:1.1:provided
[INFO] |  +- compojure:compojure:jar:1.1.3:provided
[INFO] |  |  +- org.clojure:core.incubator:jar:0.1.0:provided
[INFO] |  |  +- org.clojure:tools.macro:jar:0.1.0:provided
[INFO] |  |  +- clout:clout:jar:1.0.1:provided
[INFO] |  |  \- ring:ring-core:jar:1.1.5:provided
[INFO] |  |     \- commons-fileupload:commons-fileupload:jar:1.2.1:provided
[INFO] |  +- hiccup:hiccup:jar:0.3.6:provided
[INFO] |  +- ring:ring-jetty-adapter:jar:0.3.11:provided
[INFO] |  |  \- ring:ring-servlet:jar:0.3.11:provided
[INFO] |  +- org.clojure:tools.logging:jar:0.2.3:provided
[INFO] |  +- org.clojure:math.numeric-tower:jar:0.0.1:provided
[INFO] |  +- org.slf4j:slf4j-log4j12:jar:1.5.8:compile


2.选定一个版本的包留下,在要去掉的依赖中 exclusion掉冲突jar


<dependency>
			<groupId>storm</groupId>
			<artifactId>storm</artifactId>
			<version>0.8.2</version>
			<!-- keep storm out of the jar-with-dependencies -->
			<scope>provided</scope>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-log4j12</artifactId>
				</exclusion>
			</exclusions>
		</dependency>



另外在Maven中添加依赖包时,不知道怎么写 dependency的groupid和artifactid时,可在 http://mavenrepository.com  中收索依赖包的dependency的写法。





相关文章推荐

maven jar包冲突小记

本地调试报错: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/E:/r...

Java 使用 Graphql , 搭建查询服务

背景随着react的开源,facebook相继开源了很多相关的项目,这些项目在他们内部已经使用了多年,其中引起我注意的就是本次讨论的是graphql,目前官方只有nodejs版,由于很多公司的后台技术...

用dependency:tree查看maven引入jar包的传递依赖

maven项目的pom.xml文件给项目导入了不同的jar包,有时候不同的dependency会引入同一个jar包的不同版本。 当不同版本的jar包被依赖后,可能会出现: 冲突。有的版本的...
  • lkforce
  • lkforce
  • 2017年03月16日 17:58
  • 4634

Maven类包冲突终极三大解决技巧 mvn dependency:tree

举例 A依赖于B及C,而B又依赖于X、Y,而C依赖于X、M,则A除引B及C的依赖包下,还会引入X,Y,M的依赖包(一般情况下了,Maven可通过等若干种方式控制传递依赖)。 这里有一个需要特别注意...

查找maven依赖的jar mvn dependency:tree解决多项目多引入jar包版本导致的问题

可以通过此命令进行查看 eclipse或者IDE有相应的集成插件查看 打开项目中的pom.xml...

maven安装jar包到本地maven库

C:\Users\Administrator>mvn install:install-file -Dfile=d:/clj-time-0.4.1.jar -DgroupId=clj-time -Dar...

Maven依赖冲突之httpclient.jar包冲突异常分析

pom中指定httpclient-4.4.jar,但实际打包后加载的是httpclient-4.3.6.jar,后来发现是pom中配置的打包插件maven-assembly-plugin版本过低导致的...

通过mvn dependency:tree 查看依赖树,解决依赖jar冲突问题

引用 mvn dependency:tree 以下是使用这个工具产生的依赖树: 引用 E:\01workspace\chenxh\09research\rop\rop>...

maven冲突解决

如果项目报错NoClassDefFoundError, NoSuchMethodError,不要头疼,看看你的包是否冲突。 如何定位冲突原因呢? 先来学习maven依赖的几个原则: (1)依赖是使用...

Maven解决类包依赖冲突

使用maven最烦人的可能就是类包之间的版本冲突引发的问题了,类包冲突的一个很大的原因即产类包之间的间接依赖引起的。每个显式声明的类包都会依赖于一些其它的隐式类包,这些隐式的类包会被maven间接引入...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Maven dependency 包冲突解决方案
举报原因:
原因补充:

(最多只允许输入30个字)