怎么解决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解决jar包冲突

Maven解决jar包冲突

Maven解决类包依赖冲突

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

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

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

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

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

Maven的传递性依赖及其jar包冲突解决

一、Maven简介 Maven是一个跨平台的项目管理工具。作为Apache组织的一个颇为成功的开源项目,其主要服务于基于Java平台的项目创建,依赖管理和项目信息管理。 二、Maven的依赖管理 ...

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

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

maven jar包冲突常见报错及解决方法

见到如下错误,可以想到是不是jar包冲突 1.java.lang.NoSuchMethodError 2.java.lang.ClassNotFoundException 3.java.lang...

maven解决jar包版本冲突

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

IDEA解决mavenjar包冲突

前言        我相信,来到这里的你一定曾经被maven的jar包冲突困扰过。现在,阿福带着你使用IDEA彻底结局后顾之忧!工具        众所周知,IDEA为我们提供了maven视图,让我们...

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

pom中指定httpclient-4.4.jar,但实际打包后加载的是httpclient-4.3.6.jar,后来发现是pom中配置的打包插件maven-assembly-plugin版本过低导致的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:怎么解决maven管理jar包冲突问题
举报原因:
原因补充:

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