怎么解决maven管理jar包冲突问题

原创 2017年03月03日 18:25:26
maven管理jar包依赖的时候,假如你的依赖包A需要间接依赖B的1.0版本,而你的工程里又需要用到B的2.0版本,这个时候就可能会出现运行时jar冲突的异常,会报 java.lang.NoSuchMethodError 或者 java.lang.ClassNotFoundException 、java.lang.NoClassDefFoundError
解决方法一:
第一步:查询冲突jar包的依赖树
mvn dependency:tree -Dverbose -Dincludes=org.springframework:spring
第二步:在pom里找到相应的jar去掉他的依赖传递
<dependency>
<groupId>com.taobao</groupId>
<artifactId>memcache-session-super-util</artifactId>
<version>2.4.3-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
</exclusions>
</dependency>

方法二:在父级pom中使用dependencyManagement管理公用的jar版本,子类中引入自己需要的jar版本,maven会优先使用子类的jar。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.taobao.sdk</groupId>
<artifactId>sdk</artifactId>
<version>20151027-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
不过这里可能会有一个坑,假如你的project分了多个module,公共pom引入某个jar的1.0版本,你的web module中需要引入这个jar的2.0版本,但是你的web module又需要用到一个common module,而你没有修改common 这个module的pom.xml,运行的时候如果某个方法间接的用到common module里的方法而且又涉及到了这个jar的2.0新增方法,这个时候就会抛出方法invoke失败的异常。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Maven Pom 文件中的隐式依赖导致Jar冲突

Maven项目的pom文件中的显示声明的依赖jar,会隐式依赖一些别的第三方jar,这些隐式的jar有可能会与其它的隐式依赖的jar或显示声明的jar冲突,造成一些功能不能正常执行。这时,我们可以通过...

Maven解决jar包冲突

Maven解决jar包冲突

maven冲突解决

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

重复安装maven引起的冲突和解决方法

今天因为各种乱七八糟的原因,在已经安装好一个maven的情况下又

Maven依赖jar包冲突常见的解决方法

项目中,经常会遇到ClassNotFound,NoSuchMethod异常,第一反应往往是类路径不对,jar没有正确的引用。第一步判断jar是否加载,还是 加载的jar由于maven依赖管理存在传递依...
  • qfikh
  • qfikh
  • 2016-10-08 09:37
  • 5861

maven解决jar包版本冲突

Maven对于新手来说是《步步惊心》,因为它包罗万象,博大精深,因为当你初来乍到时,你就像一个进入森林的陌生访客一样迷茫。  Maven对于老手来说是《真爱配方》,因为它无所不能,利如刀锋,使用...

Maven解决类包依赖冲突

使用maven最烦人的可能就是类包之间的版本冲突引发的问题了,类包冲突的一个很大的原因即产类包之间的间接依赖引起的。每个显式声明的类包都会依赖于一些其它的隐式类包,这些隐式的类包会被maven间接引入...

利用maven工具解决jar包冲突问题或重复加载问题

在使用maven开发项目的过程中,经常会遇到jar包重复加载或者jar包冲突的问题的,但是由于有些jar是由于maven的依赖加载自动加载进来的, 而不是开发者自己配置的,特别是当项目中pom中配置的...

GitHub之多人开发一个项目

首先我们要简单知道github跟git的区别。git是版本控制工具, github是一个面向开源及私有软件项目的托管平台,也是程序员交流的地方。 接下来就开始讲怎么多人一起开发。 首先我们先拥有g...

maven+spring+springmvc+mybatis+ajax 框架下实现简单的聊天室

开头的话http://blog.csdn.net/zhshulin
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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