精华内容
下载资源
问答
  • 2020-10-18 20:34:43

    在解决冲突之前首先我们要知道什么是依赖冲突,这样可以更好的去锁定bug原因。下面通过一个代码示例来真正展示出依赖冲突。

    依赖冲突代码演示

    1、添加依赖

    <dependencies>
    	 <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>4.2.4.RELEASE</version>
        </dependency>
    
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.0.2.RELEASE</version>
        </dependency>
    </dependency>
    

    2、观察依赖的层次结构

    这里以core包来示例,spring和spring mvc都会依赖core包,这里我们会发现虽然我只导入了spring和spring mvc,但是maven却帮我们导入了,他所需要的相关jar包,这就是依赖的传递性。

    3、运行项目jra包冲突直接报错

    大概错误应该是找不到方法什么的,因为springmvc用的版本是5.0.2,而spring用的是4.2.4,依赖的传递他有一个就近原则,就是我spring依赖在上面所以他传递下来的就都是以spring的依赖版本为主的,也就是springmvc当中的core包相关包都会是4.2.4版本。版本之间肯定会有差异,所以有时候会报一些找不到方法或者类之类的错误。

    解决Maven依赖冲突的思路

    下面简单讲一下当我们出现依赖冲突的时候,我们解决依赖冲突的思路。针对于上面的报错,经测试只能采用第一种方式可行。

    1、版本号统一

    当我们能版本号统一的时候尽量版本号统一,这样可以直接的避免一些版本之间差异的问题。这里我们让spring和spring mvc统一版本,两个都用5.0.2版本的,再次运行成功解决报错。

      <dependencies>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>5.0.2.RELEASE</version>
        </dependency>
    
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.0.2.RELEASE</version>
        </dependency>
    <dependencies>
    

    2、路径最短者优先

    这里我们还是以context包下的core包来做示例

    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-context</artifactId>
       <version>4.2.4.RELEASE</version>
     </dependency>
    
     <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-core</artifactId>
       <version>5.0.2.RELEASE</version>
     </dependency>
    

    从这里可以看出5.0.2取代了4.2.4,这就是我们所说的路劲最短者优先,因为context的依赖虽然会自动导入core包,但是那就是属于下级依赖了,而5.0.2这个依赖和context这个依赖为同级,所以最终会取这个版本。

    3、路径相同时先声明者优先

    当我们把两个依赖顺序颠倒一下,会发现core包相关包都会是5.0.2版本,当然针对于上面问题,使用该方法仍然报错,因为有的时候版本之间是无法互相替代的,这个时候只能采用第一种版本号统一。

    <dependencies>
    	 <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.0.2.RELEASE</version>
         </dependency>
    	 <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>4.2.4.RELEASE</version>
        </dependency>
    </dependency>
    

    当调换顺序之后我们会发现他会都引用5.0.2

    4、排除依赖

    jar包他是存在相互依赖的,就比如spring-context他依赖aop,和core包等,当他和别的jar包产生冲突的时候,我们可以考虑在保证项目在排除他的冲突jar包还可以正常运行和使用的情况下进行排除,从而解决依赖冲突的问题。
    下面以core包为例,进行排除,首先打开pom然后打开依赖层次结构找到要排除的jar包以及层次,然后右键打开pom

    打开pom之后我们可以找到他的坐标和模块名称

    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-context</artifactId>
    	<version>5.0.2.RELEASE</version>
    	<exclusions>
    		<exclusion>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-core</artifactId>
    		</exclusion>
    	</exclusions>
    </dependency>
    

    总结

    总体来说解决冲突的方案就是以上几种,我们需要根据实际场景来进行选择性解决,看看哪一种方案更适合。

    更多相关内容
  • 主要介绍了maven依赖冲突以及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • maven依赖冲突

    2021-06-26 16:22:11
    一:依赖冲突的表现 二:依赖冲突发生的原因 三:依赖原则优先级 四:依赖冲突排查 五:Maven命令排查 六:Maven helper命令排查 七:解决方案 一:依赖冲突的表现 例1:当服务启动或者调用发生如下异常时,...

    一:依赖冲突的表现

    • 例1:当服务启动或者调用发生如下异常时,NoSuchMethodError,ClassNotFoundException 等。则一般是因为jar包冲突引起的,如最近项目中遇到的一个问题,就是因为com.alipay.common包发生了版本冲突,项目中实际编译打包的com.alipay.common:tracer包中RpcLogContext类没有getConnEstablishedSpan()方法引起的,虽然本地编译没有问题但服务跑起来就会报NoSuchMethodError找不到方法错误
    java.lang.NoSuchMethodError: com.alipay.common.tracer.context.RpcLogContext.getConnEstablishedSpan()

    image.png


    • 例2:依赖关系是app-web分别依赖project-A,project-B,然后project-A依赖1.0版本的project-common(只有hello()方法),project-B依赖project-C,project-C依赖高版本2.0的project-common(高版本中还有goodbye()方法)
    • image.png
    hello,world
    Exception in thread "main" java.lang.NoSuchMethodError: com.xxx.service.HelloWorld.goodbye()Ljava/lang/String;
        at com.xxx.adaptor.GoodbyeAdaptorService.goodbye(GoodbyeAdaptorService.java:11)
        at com.xxx.service.GoodbyeService.goodbye(GoodbyeService.java:11)
        at com.xxx.web.WebApp.goodbyeTest(WebApp.java:16)
        at com.xxx.web.WebApp.main(WebApp.java:23)
    
    • 为什么project-C依赖的project-common 2.0无法被加载,原因就是maven依赖采用的是就近依赖。从上图可以看出,project-common 1.0离app-web项目最近,因为project-common 2.0和app-web中间还隔着一个project-B。
    • 我们查看app-web项目的依赖树结构,查看命令:mvn dependency:tree -Dverbose
    • image.png
    • 由上图可以看到包依赖结构中,有两个不同版本的project-common,所以只需要排除掉一个导致报错的包即可(低版本没有方法的的包)
    com.xxxproject-A1.0com.xxxproject-commoncom.xxxproject-B1.0
    • 结果
    • image.png

    二:依赖冲突发生的原因

    • 大多数的依赖冲突发生的原因是因为maven的传递依赖会引入很多隐式的依赖,这些依赖可能会和我们显示依赖版本不一致。
    • image.png
    • 依赖冲突的原因总结一句话就是,依赖的版本和实际使用的版本不一致导致的。

    三:依赖原则优先级

    • 原则一:最短路径优先
      • 最短路径优先: 当依赖声明不在同一个POM文件中时,或者说存在依赖传递时,路径最短的jar包将被选为最终依赖。例如下面两个依赖路径:此时Jar2.0将被选为最终依赖。
      •   image.png
    • 原则二:第一声明者优先
      • 第一声明者优先: 当依赖声明不在同一个POM文件中时,或者说存在依赖传递时,并且依赖传递长度相同时,最先声明的依赖将被选为最终依赖。此时Jar1.0将被作为最终依赖。
      • image.png
    • 原则三:覆盖优先
      • 覆盖优先: 当依赖声明在同一个POM文件中时,后面声明的依赖将覆盖前面声明的依赖。此时,Jar2.0将被选为最终依赖。
      • image.png

    四:依赖冲突排查

    • 根据报错原因能初步知道是那个jar包冲突引起的NoSuchMethodError,ClassNotFoundException,但是如何排查引发问题的jar包存在哪些版本的冲突呢?或者说该怎么去查找以及解决呢?
    • 有两种办法来排查jar版本冲突,下面分别来介绍

    五:Maven命令排查

    • 首先列出常用的maven依赖冲突排查命令
    mvn dependency:tree 查看maven依赖树(并不能查看到所有的传递依赖) 
    mvn dependency:tree -Dverbose 查看全部传递依赖依赖 ,-Dverbose参数,这时就必定是最全的了。
    全是全了,但显示出来的东西太多,头晕目眩,有没有好法呢?当然有了,加上Dincludes或者Dexcludes说出你喜欢或讨厌,dependency:tree就会帮你过滤出来
    
    如:mvn dependency:tree -Dverbose -Dincludes=com.alipay.common:tracer
    
    • 1、如在IDEA中可以在Terminal中输入上述命令来查看maven依赖,这种方式不会保留历史记录,下次还是要重新输入
    • image.png
    • 2、也可以用这种方式来输入命令排查,会保留历史记录,下次排查直接使用历史命令即可
    • image.png
    • 执行结果:如果在执行结果中出现 omitted for conflict with 这样的字样,就表示项目中存在jar依赖冲突,最后编译使用的jar包是omitted for conflict with字样后面的版本

    • image.png

    六:Maven helper命令排查

    • 1、首先IDEA安装插件 maven helper插件(因为我已经安装了,所以没 install 的按钮了)
    • image.png
    • 2、安装完成后,在 pom 文件下方会出现这个东西
    • image.png
    • 3、点击AnaLyzer进去是这样的
    • image.png
    • 4、接下来到重点了,选中冲突选项 conflicts,这一列都是存在冲突的包
    • image.png

     

    • 5、以fastjson 为例,当然我们调错误的时候也可以直接搜索有问题的包,如下
    • image.pngimage.png
    • 6、选中右键就可以 Exclude 啦,想用1.2.28就把其他版本的Exclude掉,想用1.2.3就把其他版本的Exclude掉,是不是很方便。
    • image.png
    • image.png

     

     

     

     

    七:解决方案

    • 把不需要的jar包直接
    <dependency>
                <groupId>com.alipay.xxxxx</groupId>
                <artifactId>xxxxx-xxxx</artifactId>
                <version>1.0.0.20210225</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.alipay.xxxxx</groupId>
                        <artifactId>tracer</artifactId>
                    </exclusion>
                </exclusions>
        </dependency>
    展开全文
  • 什么是依赖冲突 依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类包版本冲突 依赖冲突的原因 依赖冲突很经常是类包之间的间接依赖引起的。每个显式声明的类包都会依赖于一些其它的隐式类包,这些...

    什么是依赖冲突
    依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类包版本冲突

    依赖冲突的原因
    依赖冲突经常是类包之间的间接依赖引起的。每个显式声明的类包都会依赖于一些其它的隐式类包,这些隐式的类包会被maven间接引入进来,从而造成类包冲突

    如何解决依赖冲突
    首先查看产生依赖冲突的类jar,其次找出我们不想要的依赖类jar,手工将其排除在外就可以了。具体执行步骤如下
    1、查看依赖冲突
    a.通过dependency:tree是命令来检查版本冲突

    mvn -Dverbose dependency:tree
    

    当敲入上述命令时,控制台会出现如下内容

    [INFO] org.example:hello:jar:1.0-SNAPSHOT
    [INFO] +- org.springframework:spring-context:jar:5.2.7.RELEASE:compile
    [INFO] |  +- (org.springframework:spring-aop:jar:5.2.7.RELEASE:compile - omitted for conflict with 5.2.0.RELEASE)
    [INFO] |  +- org.springframework:spring-beans:jar:5.2.7.RELEASE:compile
    [INFO] |  |  \- (org.springframework:spring-core:jar:5.2.7.RELEASE:compile - omitted for duplicate)
    [INFO] |  +- org.springframework:spring-core:jar:5.2.7.RELEASE:compile
    [INFO] |  |  \- org.springframework:spring-jcl:jar:5.2.7.RELEASE:compile
    [INFO] |  \- org.springframework:spring-expression:jar:5.2.7.RELEASE:compile
    [INFO] |     \- (org.springframework:spring-core:jar:5.2.7.RELEASE:compile - omitted for duplicate)
    [INFO] \- org.springframework:spring-aop:jar:5.2.0.RELEASE:compile
    [INFO]    +- (org.springframework:spring-beans:jar:5.2.0.RELEASE:compile - omitted for conflict with 5.2.7.RELEASE)
    [INFO]    \- (org.springframework:spring-core:jar:5.2.0.RELEASE:compile - omitted for conflict with 5.2.7.RELEASE)
    
    

    其中omitted for duplicate表示有jar包被重复依赖,最后写着omitted for conflict with xxx的,说明和别的jar包版本冲突了,而该行的jar包不会被引入。比如上面有一行最后写着omitted for conflict with 5.2.7.RELEASE,表示spring-core 5.2.0版本不会被项目引用,而spring-core 5.2.7版本会被项目引用

    b.如果是idea,可以安装maven helper插件来检查依赖冲突

    maven helper插件安装成功,点开pom.xml会发现多了一个Dependency Analyzer视图,如下
    在这里插入图片描述
    上面按钮的图标含义如下

    • Conflicts(查看冲突)
    • All Dependencies as List(列表形式查看所有依赖)
    • All Dependencies as Tree(树形式查看所有依赖)

    上图说明有3个jar存在冲突,点击冲突的jar,可以查看和哪个jar产生冲突,如下图
    在这里插入图片描述
    2、解决冲突
    项目的pom.xml形如下

     <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.2.7.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>5.2.0.RELEASE</version>
            </dependency>
        </dependencies>
    

    通过查看依赖树,我们知道项目会引用5.2.7.RELEASE的spring core jar包,而不会引用5.2.0的jar包,如果我们想用5.2.0版本的spring core包,我们该如何做?

    a、使用第一声明者优先原则
    谁先定义的就用谁的传递依赖,即在pom.xml文件自上而下,先声明的jar坐标,就先引用该jar的传递依赖。因此我们如果要使用5.2.0版本的spring core包,我们可以改成如下声明

      <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>5.2.0.RELEASE</version>
            </dependency>
            
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.2.7.RELEASE</version>
            </dependency>
        </dependencies>
    

    查看依赖树

    [INFO] org.example:hello:jar:1.0-SNAPSHOT
    [INFO] +- org.springframework:spring-aop:jar:5.2.0.RELEASE:compile
    [INFO] |  +- org.springframework:spring-beans:jar:5.2.0.RELEASE:compile
    [INFO] |  |  \- (org.springframework:spring-core:jar:5.2.0.RELEASE:compile - omitted for duplicate)
    [INFO] |  \- org.springframework:spring-core:jar:5.2.0.RELEASE:compile
    [INFO] |     \- org.springframework:spring-jcl:jar:5.2.0.RELEASE:compile
    [INFO] \- org.springframework:spring-context:jar:5.2.7.RELEASE:compile
    [INFO]    +- (org.springframework:spring-aop:jar:5.2.7.RELEASE:compile - omitted for conflict with 5.2.0.RELEASE)
    [INFO]    +- (org.springframework:spring-beans:jar:5.2.7.RELEASE:compile - omitted for conflict with 5.2.0.RELEASE)
    [INFO]    +- (org.springframework:spring-core:jar:5.2.7.RELEASE:compile - omitted for conflict with 5.2.0.RELEASE)
    [INFO]    \- org.springframework:spring-expression:jar:5.2.7.RELEASE:compile
    [INFO]       \- (org.springframework:spring-core:jar:5.2.7.RELEASE:compile - omitted for conflict with 5.2.0.RELEASE)
    

    b、使用路径近者优先原则
    即直接依赖级别高于传递依赖。因此我们可以在最先的pom.xml添加如下内容

     <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.2.7.RELEASE</version>
            </dependency>
            
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>5.2.0.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>5.2.0.RELEASE</version>
            </dependency>
        </dependencies>
    

    在这里插入图片描述
    通过上图可以看到项目引入是 spring core 5.2.0的包

    c、排除依赖
    排除依赖如果是idea,可以使用maven helper插件进行排除。点开pom.xml,切换到Dependency Analyzer视图,选择All Dependencies as Tree,点击要排除的jar,右键会出现Execlude选项,如下
    在这里插入图片描述
    它产生的效果和如下配置是一样

     <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.2.7.RELEASE</version>
                <exclusions>
                    <exclusion>
                        <artifactId>spring-core</artifactId>
                        <groupId>org.springframework</groupId>
                    </exclusion>
                </exclusions>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>5.2.0.RELEASE</version>
            </dependency>
        </dependencies>
    

    在这里插入图片描述
    通过上图可以看到项目引入是 spring core 5.2.0的包

    4、版本锁定
    使用dependencyManagement 进行版本锁定,dependencyManagement可以统一管理项目的版本号,确保应用的各个项目的依赖和版本一致。

    如果我们项目中只想使用spring core 5.2.0的包,pom.xml可以改为如下

    <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-core</artifactId>
                    <version>5.2.0.RELEASE</version>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.2.7.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>5.2.0.RELEASE</version>
            </dependency>
            
        </dependencies>
    

    在这里插入图片描述
    通过上图可以看到项目引入是 spring core 5.2.0的包

    总结
    综上就是maven如何排查依赖冲突以及解决方法,对于排查依赖个人比较推荐使用maven helper插件,至于解决依赖冲突个人推荐使用版本锁定的方法,此外dependencyManagement只是声明依赖,并不自动实现引入,因此子项目需要显示的声明需要用的依赖。

    依赖冲突示例:
    (1)使用a.jar包依赖b.jar中的hello方法,但是b.jar有两个版本,v1版本和v2版本。v1版本有hello方法,v2版本没有hello方法。使用v2版本就找不到该方法。jar包冲突。
    (2)v1版本的a依赖和v2版本的b依赖里面都有各自版本的c依赖,使用哪个版本的c依赖,就将另一个版本的c依赖排除即可。

    展开全文
  • 如何解决Maven依赖冲突

    千次阅读 2022-03-01 15:49:01
    一、Java常见包冲突异常: AbstractMethodError NoClassDefFoundError ClassNotFoundException LinkageError 二、冲突分析 ...Maven 对 pom 文件的传递性依赖自动进行管理, 其中有一个原则 绝对不允许最

    一、Java常见包冲突异常:

    AbstractMethodError
    NoClassDefFoundError
    ClassNotFoundException
    LinkageError

    二、冲突分析在这里插入图片描述

    像上图,就发生了包引用冲突,如果C包v0.1版本在前,JVM加载过v0.1版本里的同名类后就不会加载v0.2里的同名类,这很可能造成丢失了v0.2里同类里新增的方法属性等等。

    接下来我们看看Maven对这种情况是如何进行管理的。

    Maven 对 pom 文件的传递性依赖自动进行管理, 其中有一个原则 绝对不允许最终的classpath出现同名不同版本的jar包 。
    在这里插入图片描述
    Maven会根据pom文件中的groupId、artifactId、version来判断jar是否冲突,这就是规范约定的好处之一。

    如果出现了同名不同版本的jar包,Maven的处理原则是 离你项目更近的jar包会被选中,其他的淘汰 , 这句话什么意思呢 请看下图:
    在这里插入图片描述
    C包V0.2胜出,因为它离我们的项目更近,看图应该就感觉很直观啦,

    最终的classpath就是 A包、B包、D包、C包v0.2, Maven将C包v0.1排除掉啦。

    三、处理冲突

    1、下载Idea插件 Maven Helper

    File–>setting—>Plugins—>在搜索框中填写Maven Helper然后搜索,单击Install按钮进行安装,装完重启IDE。在这里插入图片描述
    当Maven Helper 插件安装成功后,打开项目中的pom文件,下面就会多出一个视图Dependency Analyzer:
    在这里插入图片描述
    切换到此试图即可进行相应操作:
    Conflicts(查看冲突)
    All Dependencies as List(列表形式查看所有依赖)
    All Dependencies as Tree(树形式查看所有依赖)

    当前界面上还提供搜索功能,方便使用。
    在这里插入图片描述
    切换到maven 依赖视图选择冲突选项,如果有冲突,在左下面区域会有红色显示。

    2、解决冲突:

    方法1:更换兼容版本
    方法2:右键单击红色区域,弹出菜单选择Exclude命令,对冲突进行排除。
    在这里插入图片描述

    展开全文
  • Maven依赖冲突详解

    2020-12-30 17:43:46
    Maven依赖冲突详解 什么是依赖冲突 依赖冲突就是指项目依赖于同一种jar包的不同版本。 依赖冲突产生原因都是由于类包之间的间接依赖造成的。就是每个显式声明的类包都会依赖于一些其它的隐式类包,这些隐式的类包会...
  • 以下文章来源方志朋的博客,回复”666“获面试宝典1、何为依赖冲突Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的。Maven的依赖机制会导致Jar包的冲突。举个例子,现在你...
  • 一、maven依赖原则 1、依赖路径最短优先原则 一个项目Demo依赖了两个jar包,其中A-B-C-X(1.0) , A-D-X(2.0)。由于X(2.0)路径最短,所以项目使用的是X(2.0)。 2、pom文件中申明顺序优先 如果A-B-X(1.0) ,A-C-X...
  • 1、何为依赖冲突 Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的。Maven的依赖机制会导致Jar包的冲突。举个例子,现在你的项目中,使用了两个Jar包,分别是A和B。现在A需要依赖另一个Jar包C,B也...
  • 今天工作遇到了maven包的冲突问题,自己查了一些资料,也请教了身边的一些大佬,重于解决了问题,这里进行了整理供大家分享。 1、使用工具maven helper 我门可以看到,插件是这么说的,maven工作中必须使用的插件...
  • 在项目开发中使用Maven管理Jar包时,常常会遇到Jar包依赖冲突。其根本原因是不同Jar包引用了同一Jar包的不同版本,从而在代码调用时,无法确定使用的是哪个版本的Jarba包。 二、解决办法 解决这一问题的方法有...
  • 我的是由于springbooot的starter-web和dependencies冲突
  • 在插件安装好之后,打开项目的pom.xml文件,在底部会多出一个Dependency ...除了使用Maven Helper查看依赖冲突,也可以使用IDEA提供的方法——Maven依赖结构图,打开Maven窗口,选择Dependencies,然后单击类似结构的图
  • 使用Maven Helper解决Maven依赖冲突

    千次阅读 2020-07-29 19:02:19
    使用Maven Helper解决Maven依赖冲突 1、何为依赖冲突 Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的。Maven的依赖机制会导致Jar包的冲突。举个例子,现在你的项目中,使用了两个Jar包,分别是A和B。...
  • Maven依赖冲突问题排查经验 一、背景 在日常的开发中,排查问题是一个合格Java开发者的的基本能力。对于常见的NullPointerException,NoClassDefFoundError等问题一般通过google直接就能找到答案。 不过还有一些异常...
  • idea解决maven依赖冲突

    千次阅读 2020-06-19 16:25:25
    最近在一个老spring项目上面需要适配一个新功能,过程中也需要升级spring的版本,然后最后就导致maven的依赖包很乱,同一个包存在多个版本,本文就记录下使用idea解决maven依赖冲突,同时记录下assembly打包插件的...
  • 在使用Maven的过程中,比较常见也相对难解决的问题就是依赖冲突,Gradle和sbt也同样存在此问题。本文先简述Maven中的依赖原则,然后通过两个例子讲述解决方法。 Maven依赖原则 Maven具有传递依赖(transitive ...
  • 在依赖关系及其复杂的情况下,就容易产生依赖冲突依赖冲突(包冲突) 表现形式 通常的表现形式为抛出异常如下异常 1.java.lang.NoSuchMethodError 2.java.lang.ClassNotFoundException 3.java.lang....
  • 排查maven依赖冲突

    2021-11-10 13:00:03
    SLF4J: Found binding in [jar:file:/D:/Intellij/install/apache-maven-3.6.1/maven-repo/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J:
  • 解决方案: 以idea 操作为例, 打开maven依赖的图,确定要使用的jar的版本,将冲突的jar包给exclude maven版本以来的缘由 . 软件工程是多人合作的结果,我们在开发软件的时候经常会使用一些别人编写好的,比较成熟的...
  • IDEA下解决Maven依赖冲突

    千次阅读 2018-11-22 15:03:52
    Maven依赖使用方便,但是出现了依赖冲突后,一般如何解决呐?本文将以IDEA为开发工具介绍一下. 方式一:使用Maven-Helper插件(推荐) 1.1 Maven插件准备.(Maven-Helper插件). 下载后,重新启动IDEA,即可使用....
  • 导入maven仓库的时候总是提示jar文件导入不成功的错误,后经过分析,发现不成功的文件夹里面存在lastUpdate后缀名的文件。 用途:删除lastupdated脚本文件 注:路径需要自己用文本编辑器打开后进行修改
  • 1 maven出现依赖冲突的情况 (1) 传递依赖导致不同版本jar包冲突,maven采用就近原则排除了依赖路径比较远的jar 1)如果排除的是旧版本的jar包,而调用的方法是最有新jar中才有的,这样就会报错,一般是ClassNot...
  • 如何解决maven依赖冲突

    千次阅读 2019-09-07 19:10:59
    冲突问题 比如项目中引用了两个 fastjson.jar的版本,分别为 fastjson:1.2.28 fastjson:1.2.3 我们用到了1.2.28中的某个类, 比如 A类,在版本更新中 1.2.3版本去掉了这个类,然而我们项目中maven 却把1.2.3的 jar ...
  • 使用idea解决maven依赖冲突

    千次阅读 2020-12-19 20:29:31
    前言:我们进行用maven 开发组件的时候,经常会遇到一种情况,我们添加一些maven依赖后,经常会出现本地原本正常的代码编译不过去 下面我们就将这种问题的解决思路和解决方案逐步讲解 记录报错的那几个类 将刚才...
  • 1.打开设置,选中Plugins,搜索maven help 2.安装Maven Helper插件 ...5.选择Conflicts,选中冲突jar包,在选则需要排除的版本,右键,Exclude 6.排除完成,可以返回Text查看一下结果 ...
  • 一文看懂怎么解决Maven依赖冲突问题

    千次阅读 2019-08-20 17:33:11
    在本文中,我们将讲到如何处理Maven依赖冲突 不知道你在使用Maven时是否遇到过诸如"NoSuchMethodError"或"ClassNotFoundException"之类的问题,甚至发生这些问题的Java类你没都没有听说过。要搞清楚这里面的缘由,...
  • Maven是个广泛使用的依赖管理工具,但是日常开发中,我们经常会遇到因为Maven依赖机制导致的Jar包冲突。 举个例子,如果你的项目中使用了两个Jar包,分别是A和B。现在A需要依赖另一个Jar包C,B也需要依赖C。但是A...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,018
精华内容 16,007
关键字:

maven依赖冲突

友情链接: SFLHXEH.rar