权声明:本文为博主原创文章,未经博主允许不得转载。
jar包冲突几乎是每个java程序员都会遇到的问题,而且特别是大工程,jar包各种依赖,经常性发生包冲突。通常会报这样几个运行时异常:
- java.lang.NoSuchMehodError
- java.lang.NoClassDefFoundError
这类问题十有八九都是jar包冲突引起,要解决jar包冲突问题,我们先了解下导致这个冲突的原因。
导致jar包冲突的原因
1、mvn的传递依赖特性:mvn编译打包除了会引入直接申明的依赖,还会引入间接申明的依赖
2、mvn的依赖仲裁规则:
1). 按照项目总控POM的DependencyManager版本声明进行仲裁。
2). 如无仲裁声明,则按照依赖最短路径确定版本。
3). 若相同路径,有严格区间限定的版本优先。
4). 若相同路径,无版本区间,则按照先入为主原则。
3、依赖的scope会影响依赖的影响范围。
简单冲突解决的三途径!
1、根据报错的class名或方法名定位到可能导致冲突的jar包,jar包冲突引入有几种情况:
1). 引入了这个jar包的多个版本,而mvn仲裁的时候取了错误的版本,这个版本本身就缺少正确的class或方法。
2). 引入了不同坐标但是具有同名class的多个jar,mvn加载class的顺序差异会导致加载到错误的class。
2、通过mvn dependency:tree > tree.txt 导出全部的依赖。 可以使用 -Dverbose 、-Dincludes或者-Dexcludes参数来精确定位导致冲突的jar包。
3、找到需要排除的依赖jar包,通过mvn仲裁优先的方法定义正确的jar包,或者通过exclusion的方式排除错误的jar包。
4.温馨提示:另外在项目开发中jar尽量按需引入,系统管理起来,别什么都不管直接加包进来,这样也可以在一定程度上减少jar包冲突的风险。
相关推荐
java -jar jarjar.jar process rules.txt input.jar output.jar ``` 3. **处理过程**:jarjar工具会读取规则文件,解析其中的规则,然后遍历输入jar包中的每个类,根据规则进行重命名或移动操作。 4. **生成新...
标题中的"msbase.jar,mssqlserver.jar,msutil.jar"是Microsoft SQL Server JDBC驱动程序的主要组成部分。这些Java归档(JAR)文件是用于在Java应用程序中与Microsoft SQL Server数据库进行交互的关键组件。 JDBC...
(另外,实际操作的时候发现JSTL1.2.jar和JSTL1.1.jar这2个包放一起可以在tomcat5.5和tomcat6.0上跑,鉴于JSTL1.1.jar里面没有c.tld等文件,猜测JSTL1.1.jar里面只是放置了1.1的专用的类和信息)
《深入解析httpclient.jar及其与code.jar的关联》 在Java开发中,HTTP通信是不可或缺的一部分,而Apache HttpClient库正是Java实现HTTP客户端操作的重要工具。本文将深入探讨httpclient.jar包,以及它与code.jar包...
在给定的文件列表中,我们可以看到四个关键的JAR(Java Archive)文件,它们在Java EE应用开发中扮演着重要角色: 1. **javaee.jar**:这是Java EE的API库,包含了Java EE规范定义的所有接口和类。开发者可以通过这...
而`jstl.jar`和`standard.jar`是JSP开发中两个重要的库文件,主要用于提供JSTL(JavaServer Pages Standard Tag Library)标准标签库的支持。 JSTL是由Apache软件基金会的Tomcat项目开发的,它为JSP提供了一套标准...
在Java Web开发中,"standard-1.1.2.jar"和"jstl-1.1.2.jar"是两个非常重要的库文件,它们主要用于处理JSP页面中的标签库。这两个库文件在使用时必须确保版本匹配,因为不同版本之间可能存在兼容性问题,不一致的...
jstl-1.2.1,之前的版本需要在服务器中配置一下,而且它分成了两个jar(jstl.jar和standard.jar)还有一个tld文件,而1.2已经不用配置了,直接把javax.servlet.jsp.jstl-1.2.1.jar和javax.servlet.jsp.jstl-api-1.2.1...
所有jar包集全,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR...
axiom-api-1.2.12.jar, axiom-impl-1.2.12.jar, axis.jar, axis2-adb-1.6.2.jar, axis2-kernel-1.6.2.jar, axis2-transport-http-1.6.1.jar, axis2-transport-local-1.6.1.jar, commons-codec-...
j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar...
spring3.1官方所有的jar包 org.springframework.aop-3.1.RELEASE.jar org.springframework.asm-3.1.RELEASE.jar org.springframework.aspects-3.1.RELEASE.jar org.springframework.beans-3.1.RELEASE.jar org....
jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2...
java操纵excel的jar包
包含spring 3.0.5的所有jar文件: org.springframework.aop-3.0.5.RELEASE.jar org.springframework.asm-3.0.5.RELEASE.jar org.springframework.aspects-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE...
json-lib-2.2.3-jdk15.jar commons-beanutils-1.7.0.jar commons-httpclient-3.1.jar commons-lang-2.3.jar commons-logging-1.1.1.jar commons-collections-3.2.1.jar ezmorph-1.0.3.jar 如果不关联这些包,则会...
jetty-security-9.4.8.v20171121.jar,jetty-io-9.4.8.v20171121.jar,jetty-continuation-9.4.8.v20171121.jar,jetty-client-9.4.8.v20171121.jar,jetty-jmx-9.4.8.v20171121.jar,jetty-plus-9.4.8.v20171121....
mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57...
在Java开发领域,尤其是涉及到Web服务和服务器配置时,`activation.jar`、`mail.jar`和`tools.jar`是三个非常关键的库文件。在本篇文章中,我们将深入探讨这三个库文件的作用,以及它们如何在Tomcat服务器和Axis Web...
包含hadoop平台Java开发的所有所需jar包,例如activation-1.1.jar apacheds-i18n-2.0.0-M15.jar apacheds-kerberos-codec-2.0.0-M15.jar api-asn1-api-1.0.0-M20.jar api-util-1.0.0-M20.jar asm-3.2.jar avro-1.7.7...