zoukankan      html  css  js  c++  java
  • Maven jar包冲突

    在pom.xml中引入一个依赖,maven会自动导入这个依赖的依赖,方便的同时也会造成jar包冲突:

    (1)A、B都依赖C,我们导入A(自动导入C)、B(自动导入C),maven自动导入了2个C,到底使用哪个C?这2个C冲突了,maven不知道该用哪个。

    (2)A依赖C,我们导入A(自动导入C),我们不知道已经有了C,自己又手动导了一个C。

    我们直接导入的依赖叫做直接依赖,比如A;maven自动导入的直接依赖的依赖,叫做间接依赖,比如C。

    解决费方式:

    • 如果冲突的包都是直接依赖、或者都是间接依赖,把要使用的那个放前面,先声明的有效
    • 如果冲突的包一个直接依赖、一个实间接依赖,把要用的写成直接依赖,直接依赖的优先级比间接依赖高

    还可能是因为jar包的作用域:

    (3)比如要使用HttpServletRequest,需要导入servlet-api.jar、jsp-api.jar,这样写代码时才有相应的代码提示,IDEA才不会提示红色。

        但测试、运行时要部署到tomcat上,tomcat自带了servlet-api.jar、jsp-api.jar,冲突了,tomcat不知道要用哪个。

    解决方式:

    • 使用<scope>设置作用域
    • 如果没有合适的作用域,比如上面2个jar只在编译时使用,但没有只在编译时起作用的作用域(compile是编译、测试、运行都有效),先添加进来,用完注释掉即可。

    可查看项目的依赖关系图:

  • 相关阅读:
    Ubuntu出现无法定位软件包,更换源
    VScode支持Python
    Tp3.2 组合查询
    PHP 年月日,转为标准时间
    常用查询之按时间范围查询,按名称查询
    微信发起支付步骤
    拷贝 最近 一段时间生成的文件
    获取调查问卷统计
    Tp3.2 实现一个字段的或查询
    MFC DDX_Control 与 DDX_Text
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/12297569.html
Copyright © 2011-2022 走看看