`
weihong01267
  • 浏览: 51687 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

jar

 
阅读更多

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名或方法名定位到可能导致冲突jarjar冲突引入有几种情况:

    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冲突的风险。

 

 
分享到:
评论

相关推荐

    jarjar-1.4.jar

    java -jar jarjar.jar process rules.txt input.jar output.jar ``` 3. **处理过程**:jarjar工具会读取规则文件,解析其中的规则,然后遍历输入jar包中的每个类,根据规则进行重命名或移动操作。 4. **生成新...

    msbase.jar,mssqlserver.jar,msutil.jar

    标题中的"msbase.jar,mssqlserver.jar,msutil.jar"是Microsoft SQL Server JDBC驱动程序的主要组成部分。这些Java归档(JAR)文件是用于在Java应用程序中与Microsoft SQL Server数据库进行交互的关键组件。 JDBC...

    jstl1.1.jar和standard1.1.jar

    (另外,实际操作的时候发现JSTL1.2.jar和JSTL1.1.jar这2个包放一起可以在tomcat5.5和tomcat6.0上跑,鉴于JSTL1.1.jar里面没有c.tld等文件,猜测JSTL1.1.jar里面只是放置了1.1的专用的类和信息)

    httpclient.jar包下载

    《深入解析httpclient.jar及其与code.jar的关联》 在Java开发中,HTTP通信是不可或缺的一部分,而Apache HttpClient库正是Java实现HTTP客户端操作的重要工具。本文将深入探讨httpclient.jar包,以及它与code.jar包...

    javaee.jar,jsf-api.jar,jsf-impl.jar,jstl-1.2.jar

    在给定的文件列表中,我们可以看到四个关键的JAR(Java Archive)文件,它们在Java EE应用开发中扮演着重要角色: 1. **javaee.jar**:这是Java EE的API库,包含了Java EE规范定义的所有接口和类。开发者可以通过这...

    jstl.jar和standard.jar下载

    而`jstl.jar`和`standard.jar`是JSP开发中两个重要的库文件,主要用于提供JSTL(JavaServer Pages Standard Tag Library)标准标签库的支持。 JSTL是由Apache软件基金会的Tomcat项目开发的,它为JSP提供了一套标准...

    standard-1.1.2.jar和jstl-1.1.2.jar

    在Java Web开发中,"standard-1.1.2.jar"和"jstl-1.1.2.jar"是两个非常重要的库文件,它们主要用于处理JSP页面中的标签库。这两个库文件在使用时必须确保版本匹配,因为不同版本之间可能存在兼容性问题,不一致的...

    jstl-1.2.1 jar

    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包,JAR...

    axis2所有的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架包j2ee.jar...

    spring3.1 官方全部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.jar下载jstl-1.2...

    java操纵excel的jar包(jxl.jar包 源码)

    java操纵excel的jar包

    spring3.0.5 所有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所有的jar包下载

    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相关的全部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驱动jar包mysql57...

    activation.jar和mail.jar和tools.jar

    在Java开发领域,尤其是涉及到Web服务和服务器配置时,`activation.jar`、`mail.jar`和`tools.jar`是三个非常关键的库文件。在本篇文章中,我们将深入探讨这三个库文件的作用,以及它们如何在Tomcat服务器和Axis Web...

    hadoop-2.10.0jar.zip

    包含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...

Global site tag (gtag.js) - Google Analytics