目录

问题描述

操作步骤

找到pom.xml目录

打印依赖树

查看jar包对应的AGV

依赖树中搜索

在POM.xm中的依赖项spring-support排除servlet-api依赖的传递

查看依赖的jar包


问题描述

javax.servlet.http.HttpServletResponse 类在servlet-api-2.3.jar   中,同时也在 javax.servlet-api.3.1.0.jar包中,包servlet-api-2.3.jar 先加载,javax.servlet-api-3.1.0.jar后加载,实际上,HttpServletResponse 使用的就是servlet-api-2.3.jar中的类了,但我需要javax.servlet-api-3.1.0.jar的同签名类。

备注:两个包的同签名类,类名相同,单方法可能就不同了。

操作步骤

方法:mvn dependency:tree 指令在POM.xml所在的文件目录运行,输出的就是依赖树

查看maven的依赖树结构:mvn dependency:tree

输出到某个文件中:mvn dependency:tree -->tree.txt

操作:

找到pom.xml目录

打印依赖树

  • à cd D:\JavaWorkSpace\***  回车
  • d: 回车
  • mvn dependency:tree 回车

说明:第一次运行需要下载一些插件,不用慌,等等即可。

报文如下:

[WARNING] The artifact commons-email:commons-email:jar:1.1 has been relocated to org.apache.commons:commons-email:jar:1.1

[INFO] lenovo-tms-web:lenovo-tms-web:war:0.0.1-SNAPSHOT

[INFO] +- commons-codec:commons-codec:jar:1.5:compile

[INFO] +- org.springframework:spring-webmvc:jar:4.1.7.RELEASE:compile

[INFO] |  +- org.springframework:spring-beans:jar:4.1.7.RELEASE:compile

[INFO] |  +- org.springframework:spring-core:jar:4.1.7.RELEASE:compile

[INFO] |  \- org.springframework:spring-expression:jar:4.1.7.RELEASE:compile

[INFO] +- org.springframework:spring-jdbc:jar:4.1.7.RELEASE:compile

[INFO] +- org.springframework:spring-context:jar:4.1.7.RELEASE:compile

[INFO] +- org.springframework:spring-context-support:jar:4.1.7.RELEASE:compile

[INFO] +- org.springframework:spring-tx:jar:4.1.7.RELEASE:compile

[INFO] +- org.springframework:spring-orm:jar:4.1.7.RELEASE:compile

[INFO] +- org.springframework:spring-aop:jar:4.1.7.RELEASE:compile

[INFO] |  \- aopalliance:aopalliance:jar:1.0:compile

[INFO] +- org.springframework:spring-oxm:jar:4.1.7.RELEASE:compile

[INFO] +- org.springframework:spring-web:jar:4.1.7.RELEASE:compile

[INFO] +- org.springframework:spring-support:jar:2.0.8:compile

[INFO] |  \- commons-logging:commons-logging:jar:1.1:compile

[INFO] |     +- logkit:logkit:jar:1.0.1:compile

[INFO] |     +- avalon-framework:avalon-framework:jar:4.1.3:compile

[INFO] |     \- javax.servlet:servlet-api[QQW1] :jar:2.3:compile

[INFO] +- org.aspectj:aspectjweaver:jar:1.7.2:compile

[INFO] +- org.hibernate:hibernate-validator:jar:5.0.1.Final:compile

[INFO] |  +- javax.validation:validation-api:jar:1.1.0.Final:compile

[INFO] |  +- org.jboss.logging:jboss-logging:jar:3.1.1.GA:compile

查看jar包对应的AGV

方法:Eclipse中在 中找到有问题的jar包,【右键】【Maven】【Open POM】 使用pom.xml视图查看,使用artifactId的值在依赖树中检索

报文:

<project>

<modelVersion>4.0.0</modelVersion>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<version>2.3</version>

</project>

依赖树中搜索

搜索文本:servlet-api,如下图:

可以看出依赖的顶层是:spring-spport,这就需要在spring-support中排除掉队servlet-api的依赖。

在POM.xm中的依赖项spring-support排除servlet-api依赖的传递

原始POM依赖项:

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-support</artifactId>

<version>${springsupportVersion}</version>

<scope>compile</scope>

</dependency>

添加依赖传递排除后:

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-support</artifactId>

<version>${springsupportVersion}</version>

<scope>compile</scope>

<!-- 剪除依赖传递项 -->

                     <exclusions>

                            <exclusion>

                                   <!-- 剪除项的AG,版本就不用了 -->

                                   <groupId>javax.servlet</groupId>

                                   <artifactId>servlet-api</artifactId>

                            </exclusion>

                     </exclusions>

</dependency>

查看依赖的jar包

方法: 1. 找到报错的类,F3 查看引用的jar包。2. 重新打印依赖树继续检索

方法1:可以看出引用的包是javax.servlet-api的包了

方法2:可以看出没有servlet-api的包了


END

maven.类包冲突解决案例相关推荐

  1. [转载] Maven类包冲突终极三大解决技巧 mvn dependency:tree

    举例 A依赖于B及C,而B又依赖于X.Y,而C依赖于X.M,则A除引B及C的依赖包下,还会引入X,Y,M的依赖包(一般情况下了,Maven可通过<scope>等若干种方式控制传递依赖). ...

  2. Maven类包冲突终极解决小技若干

    那句话怎么讲来着的... 引用 如果你爱他,就请让他用Maven,因为那里是天堂,如果你恨他,就请让他用Maven,因为那里是地狱. Maven对于新手来说是<步步惊心>,因为它包罗万象, ...

  3. IntelliJ IDEA Maven jar包冲突解决,快速发现jar包冲突

    IntelliJ IDEA 自带的Diagrams 去查看jar包冲突相当费劲 ~ ,安装个插件即可快速解决该问题 打开Settings,搜索maven helper,并安装 安装完成后,直接打开po ...

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

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

  5. Maven构建聚合工程以及jar包冲突解决使用总结

    一.聚合工程 如图所示: SpringCloud_CH3为聚合工程,eurekaclientarticleservice为被聚合工程. 聚合工程为一个maven工程:聚合类的pom.xml文件为: & ...

  6. 【maven】maven jar 包 冲突 的解决方式

    1.概述 视频参考:maven jar 包 冲突 的解决方式 此处文章参考:Mvn : Maven的依赖管理 依赖冲突 解决思路

  7. NoSuchMethodError 错误——包冲突解决办法

    包冲突的解决办法 注意所有关于maven的pom文件的改动,最后都要reimport一下,IDE会强制根据新的pom.xml设置重新分析并加载依赖类包,以得到和pom.xml设置相同的依赖.(这一步非 ...

  8. maven 下载包冲突问题

    maven 下载包冲突问题 java开发需要调用apache phoenix接口,配置pom.xml文件,内容如下: <repositories>         <reposito ...

  9. Maven传递依赖冲突解决(版本冲突)

    2019独角兽企业重金招聘Python工程师标准>>> 一.首先要明白直接依赖和传递依赖的概念: A > B > C 直接依赖:A > B , B > C 传 ...

最新文章

  1. .NET Core微服务之基于MassTransit实现数据最终一致性(Part 1)
  2. html里面onclick属性是什么,html中onclick事件属性定义与用法
  3. 利用python制作的可视化批量文件后缀处理工具
  4. esp32查询剩余内存_SQL 查询语句先执行 SELECT?兄弟你认真的么?
  5. 【李宏毅机器学习】Classification_1 分类(p10) 学习笔记
  6. RK3399Pro Android Rock-X 人工智能开发系列(1)
  7. 循环队列(java)
  8. CGCS2000 VS WGS84
  9. 你可能不知道的 AS 小技巧之「Extract Resource」
  10. 大富翁论坛-富翁笔记-Delphi数据库处理(转载)
  11. 域控-笔记四(综合应用)
  12. HTML和CSS实现京东登录页面(html,css代码详解)
  13. r语言 rgl 强制过程中_R语言中%||%是什么意思?
  14. 申请免费的域名并且通过FTP上传及通过自己的域名访问自己的网站
  15. 银行卡收单____商户费率_代理商分润
  16. 美国卡内基梅隆大学计算机排名,卡内基梅隆大学,美国卡梅基梅隆大学世界排名?...
  17. 专题分纲目录 思维导图
  18. Maven详解(第二节)
  19. 人效提高350%,基于KICP搭建的营销套电客服机器人,让欧派家居赢在起点
  20. 城市路(信息学奥赛一本通 - T1381)

热门文章

  1. tomcat 配置域名和ssl证书
  2. 腾讯地图小程序服务器配置,腾讯地图实现微信小程序地图定位教程
  3. 速成实用硬笔字——最常用高频汉字前100
  4. 计算机设备管理器被禁用,win系统管理员被禁用在安全模式的解决方法
  5. 北理工集训 Day1—Day2 (部分算法题目)
  6. 让老照片重现光彩(三):完整论文的中文译文
  7. java spring boot 微信公众号 分享功能
  8. Python骚操作 | 还原已撤回的微信消息
  9. bcdedit添加linux引导,利用Bcdedit创建Linux系统引导
  10. 如何设置计算机网络ip地址,图文解说如何设置IP地址