• maven.类包冲突解决案例


    目录

    问题描述

    操作步骤

    找到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的值在依赖树中检索

     

     报文:

      4.0.0

      javax.servlet

      servlet-api

      2.3

    依赖树中搜索

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

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

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

    原始POM依赖项:

                         org.springframework

                         spring-support

                         ${springsupportVersion}

                         compile

    添加依赖传递排除后:

                         org.springframework

                         spring-support

                         ${springsupportVersion}

                         compile

                        

                        

                               

                                      

                                       javax.servlet

                                       servlet-api

                               

                        

    查看依赖的jar包

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

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

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


    END

     

  • 相关阅读:
    JUC并发工具类在大厂的应用场景详解
    NumPy 数组切片及数据类型介绍
    [免费专栏] Android安全之Xposed插件开发【从零手把手带】教程
    服务器监控及其监控工具
    HMM代码参数
    【数据库技术】金管局计算机岗位——数据仓库(⭐⭐⭐⭐)
    Educational Codeforces Round 129 F. Unique Occurrences(树上问题)
    PyQt-Fluent-Widgets:一个 Fluent Design 风格的组件库
    Building a Robust Data Infrastructure for Cloud Computing Platforms
    redis主从同步及哨兵模式
  • 原文地址:https://blog.csdn.net/weixin_42754896/article/details/126431388