• jar包冲突的一些解决方案及定位包的位置


    常见的jar包冲突报错信息有:NoSuchMethodError, ClassNotFoundException, NoClassDefFoundError等等(还有个什么来着,搞忘记了)

    原因:maven里引用了同一个坐标的jar的不同版本

    解决方案:

    1. mvn dependency:tree 
        mvn dependency:tree # 可以看到整个项目的jar包依赖树,在控制台
        mvn dependency:tree  -Dverbose  # 查看完整依赖
        mvn dependency:tree>tree.txt # 将依赖结果存成文件
        mvn dependency:tree -Dverbose -Dincludes=*guava* # 查看某个具体的jar的依赖信息
    
    
    2. Intellij插件MavenHelper
        网上有很多关于这个插件的介绍和使用,可以参考
        https://www.cnblogs.com/happyflyingpig/p/11238713.html
    
    
    
    3. maven-shade-plugin
        关于这个插件的介绍和原理,我也是看了下面这篇文章才明白的,大家可以参考一下。
        https://zhuanlan.zhihu.com/p/62796806


    前言:

    在企业开发中,公司项目各模块的依赖是比较复杂,往往是A模块中依赖了B、C、D…等模块,此时我们若想在A模块中查找某个jar依赖就会很麻烦,因为无法在A的pom.xml中直接搜索到。最笨的方法就是对A模块依赖的其他模块进行逐一搜索,但我想你并不想这么做。下面我通过一个实际的案例,来简单地谈谈 IDEA 如何快捷地找到相应的pom.xml。

    场景:

    在项目中,我引入了org.json.JSONArray这个类,编译时期没有报错,但启动项目的时候却出现ClassNotFoundException,这让我很郁闷。后面一想,可能是该依赖的maven生命周期出现问题,所以只好先去看看该依赖的pom.xml了。

    解决步骤:

    1. 确定要查找jar的 artifactId

    2. 打开项目的maven依赖图

    3. 在依赖图上搜索上面找到的artifactId,这里是android-json

    4. 在图上找到相应的元素后,鼠标双击便能进入jar的pom.xml

    进来后,我们能很清楚地看到该依赖上面写着Compile编译期有效,这样问题就明确了。(如果你不相信上面的注释,可以用上面的方法,在依赖图上搜索spring-boot-configuration-processor这个jar,就会发现该依赖是<scope>provided</scope>)

    5. 引入新的依赖



  • 相关阅读:
    ※剑指offer系列51:二叉搜索树的第k个结点
    ※剑指offer系列50:序列化二叉树
    sqlserver添加表注释、字段注释
    3-实体数据模型与LINQ-where&OfType
    3-实体数据模型与LINQ-Select
    Jquery 在子页面上设置父页面元素的值
    开发注意事项
    函数的进阶
    文件操作的相关内容
    基本数据类型----dict
  • 原文地址:https://www.cnblogs.com/ctaixw/p/13257975.html
Copyright © 2020-2023  润新知