Maven依赖冲突的两种解决方式

Description:

An attempt was made to call the method com.google.common.collect.FluentIterable.append(Ljava/lang/Iterable;)Lcom/google/common/collect/FluentIterable; but it does not exist. Its class, com.google.common.collect.FluentIterable, is available from the following locations:
 
    jar:file:/C:/Users/XXX/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar!/com/google/common/collect/FluentIterable.class
 
It was loaded from the following location:

    file:/C:/Users/XXX/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar
 
Action:
 

背景:

在rabbon工程中加入swagger引发的错误。

环境:

spring-cloud-starter-netflix-ribbon Greenwich.RC2

swagger-spring-boot-starter 1.8.0.RELEASE

排查:

打开pom.xml文件,切换到dependency hierarchy

左侧为各jar包之间的关系视图,右侧为决定jar包版本的视图

在右侧找出报错的jar包名称,单击,左侧用到的会自动高亮,

然后我这边是因为swagger的guava.jar用到了20,决定性版本为16.0.1,不兼容所以出错了

如下图

 

解决方案1:统一版本

就是为jar包指定一个版本,所有用到的都会是这个版本

按图操作。。

然后ok,在pom.xml中就会对jar包指定版本,

应该可以改成其他版本吧?

搞定~

 

解决方案2:排除加载

就是在别的用到这个jar包的地方加上说明,告诉它不用自己加载依赖用别人的。

按图操作。。

 

这里可以看到它默认每个都排除加载了,那就是所以都不加载,那就是没有加载肯定报错,所以要去掉一个不用排除

 

搞定~

所以还是方案一方便...

转载:雨后浅浅唱 非常感谢作者,解决了问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java项目中,jar包是一种常见的依赖方式,而Maven则是一种更加高级的依赖管理工具。二者的不同主要在以下几个方面: 1. 依赖管理方式不同:使用jar包方式,需要手动下载所需的jar包,并将其添加到项目中;而使用Maven则可以在pom.xml文件中声明依赖Maven会自动下载所需的jar包,并且可以管理依赖的版本、作用域等信息。 2. 依赖继承方式不同:使用jar包方式,如果一个项目依赖于多个jar包,需要手动处理这些jar包之间的依赖关系;而使用Maven则可以通过父子模块的继承关系,让子模块自动继承父模块的依赖,避免了手动处理依赖关系的繁琐工作。 3. Maven提供了更多的功能:Maven不仅提供了依赖管理的功能,还可以进行构建、测试、打包、发布等操作,可以帮助开发人员更加高效地管理项目。 总之,使用Maven能够更加方便地管理项目的依赖,避免了手动下载和处理依赖关系的繁琐工作。但是,如果只是一个简单的项目,使用jar包方式也是可以的。 ### 回答2: jar包方式Maven依赖方式是Java中两种不同的方式来引入和管理外部依赖。 首先,使用jar包方式,我们需要手动将外部依赖的jar包下载并保存在本地,然后将这些jar包添加到项目的classpath中。这种方式需要我们手动管理所有的依赖,包括版本控制和冲突解决,容易出现依赖冲突的问题。 而Maven依赖方式则通过在项目的pom.xml文件中声明所需的依赖Maven会自动从网络上下载这些依赖并保存在本地的仓库中。Maven还会根据依赖关系自动解决依赖冲突,并确保每个依赖库的正确版本。这种方式简化了依赖管理的过程,提供了更简单和可重复使用的项目构建和部署。 其次,使用jar包方式,我们需要手动下载和添加所有的依赖,工作量较大。而Maven依赖方式使用集中的仓库管理依赖的下载和更新,极大地减轻了人工管理的负担。 此外,使用jar包方式,项目中的所有依赖都需要手动管理,容易出现版本不一致的问题。而Maven依赖方式可以通过声明依赖到一个整体的项目管理系统,使得依赖的版本控制更加方便,减少了版本冲突的可能性,同时也方便了团队协作和持续集成。 综上所述,Maven依赖方式相对于jar包方式具有更加灵活和便捷的依赖管理方式,能够帮助我们更好地管理项目的依赖,提高开发效率。 ### 回答3: jar包方式Maven依赖方式是软件开发中常用的两种方式来管理和使用第三方库。它们有以下不同之处: 1. 管理方式不同: - Jar包方式:开发人员需要手动下载第三方库的jar包,并将其添加到项目的classpath中。这种方式需要手动处理版本冲突依赖关系。 - Maven依赖方式:使用Maven作为项目管理工具,在项目的配置文件(pom.xml)中声明依赖关系,Maven会自动下载并管理所需的jar包。Maven解决版本冲突,并递归处理所有的依赖关系。 2. 依赖管理: - Jar包方式:需要手动下载和管理所有所需的jar包,包括它们的版本兼容性。 - Maven依赖方式:只需在pom.xml中声明所需的依赖Maven会自动下载和管理所有的依赖。开发者只需关注需要的库,而不必担心版本兼容性和冲突问题。 3. 构建与部署: - Jar包方式:需要手动将所有的依赖jar包打包到可执行的jar文件中,然后手动部署到目标环境。 - Maven依赖方式Maven会自动处理依赖并构建项目,生成可执行的jar文件。开发者只需使用Maven命令进行构建和部署,简化了整个过程。 4. 生态系统: - Jar包方式:开发人员需要在不同的库的官方网站或其他公共资源库搜索和下载所需的jar包。 - Maven依赖方式Maven中央仓库是一个中央化的资源库,包含了大量常用的库,开发者只需在配置文件中指定库的GAV(Group ID、Artifact ID、Version)信息,Maven会自动从中央仓库下载所需的库。 总体来说,Maven依赖方式相对于Jar包方式更加方便和高效。它能够自动处理依赖关系、解决版本冲突,同时提供了更简单的项目构建和部署流程,使开发者能够更专注于业务逻辑的实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值