• 一次maven构建类冲突解决方法论【重要】


    1 启动时提示:

    javax.ws.rs.core.Application

    类下有个函数找不到

    2

    idea ctrl+shift+n,Classes,Include non-project files

    javax.ws.rs.core.Application

    导致打出来的包全限定名类冲突:

    jsr311-api 1.1.1这个jar包下的这个类有问题

    3

    mvn dependency:tree

    maven dependengcy:tree 查看maven依赖树

    查到是以下这个依赖间接依赖了jsr311-api 1.1.1

    <dependency>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-client</artifactId>
                <version>1.19</version>
            </dependency>  

    完整的依赖链为: war——f(shade)——jersey-client——jsr311-api

    4

    https://mvnrepository.com/artifact/javax.ws.rs/jsr311-api/1.1.1

            <dependency>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-client</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>javax.ws.rs</groupId>
                        <artifactId>javax.ws.rs-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.ws.rs</groupId>
                        <artifactId>jsr311-api</artifactId>
                    </exclusion>
                </exclusions>
                <version>1.19</version>
            </dependency>
    

      

    done

     

    需注意:f这个项目用shade插件打包,故war中是永远不会有jsr311-api这个包的,引起冲突的类被封装在f中了 

    2020.4.8补充:

    exclusion可作用于多级依赖,比如A依赖B,B依赖C,我们要干掉C,在可在A的pom dependency中exclusion

    2020.10.18补充:

    这种war种jar包冲突,出现于groupid不一样,类名(全限定)却一样的情况a,因为同样的groupid,不同的version,只会有一个打进war包(至于把哪个打入包,取决于dependency :tree的层级)

    这也是为什么大多数问题仍然出现在编译期而不是运行期(导致大乱),情况a毕竟少数

    2021.1.14补充:

    O

      A

        C1

      B

        C2

    最终取C1进包,经验证,层级优先、pom中顺序优先  

    2021.6.8 补充

    2年后碰到冲突,又是这个类

    idea里面调出类如果找不到所有冲突 的类,就maven-reimport一下

  • 相关阅读:
    Pycharm激活
    初识HTML
    软件测试之性能测试应用领域
    剑指offer学习
    编译PC版本的C程序
    嵌入式Linux中Socket套接口开发
    win7安装ubuntu,如何设置win7为默认启动项
    struct v4l2_buffer
    dpkg命令查看 sudo apt-get install ~~ 安装的软件路径
    Missing table when do SQL data compare
  • 原文地址:https://www.cnblogs.com/silyvin/p/11942306.html
Copyright © 2020-2023  润新知