首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复两个名称相同但版本不同的相同jar造成的错误?

如何修复两个名称相同但版本不同的相同jar造成的错误?
EN

Stack Overflow用户
提问于 2019-01-07 11:32:43
回答 1查看 204关注 0票数 0

在该项目中,有两个模块:数据和基础设施。

  1. 数据模块使用Google: grpc-protobuf提供的grpc插件,它指的是com.google.guava:guava版本:26.0-android。
  2. 基础设施模块使用领事的插件:consul,它引用了com.google.guava:guava版本:22.0.

数据模块依赖于基础设施模块。

编译时没有问题,但在运行时,ConsulCache在领事-客户端调用com.google.guava:guava中的Stopwatch.elapsed()方法,这在com.google.guava:guava:22.0中是无参数的,在com.google.guava:guava:26.0-android中是参数。ConsulCache总是指向com.google.guava:guava:26.0-android,而不是com.goog.guava:guava:22.0,这将报告以下异常:

代码语言:javascript
复制
java.lang.NoSuchMethodError: com.google.common.base.Stopwatch.elapsed()Ljava/time/Duration;
at com.orbitz.consul.cache.ConsulCache$1.onComplete(ConsulCache.java:103)

因为它是一个maven项目,而且它都是关于自动管理jar包的,所以它会被第三方插件自己自动引用。

如何在不修改源代码的情况下修复此异常?

EN

回答 1

Stack Overflow用户

发布于 2019-01-07 12:30:47

首先,您需要决定是要版本22.0还是版本26.0-android

然后将一个<dependencyManagment>条目添加到poms (或者更好的公共父pom )中,以管理您想要的版本的com.google.guava:guava

dependencyManagement (Management)覆盖该依赖项的所有临时找到的版本号。所以你只能得到你选择的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54073605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档