zuul Monitors.isObjectRegistered(Ljava/lang/String;Ljava/lang/Object;)Z

Maven 依赖冲突问题定位与解决

1、定位问题

2022-05-21 11:39:38.712 ERROR 9248 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_SERVER-ZUUL/DESKTOP-KINCIJ4:server-zuul:9099 - was unable to send heartbeat!

java.lang.NoSuchMethodError: com.netflix.servo.monitor.Monitors.isObjectRegistered(Ljava/lang/String;Ljava/lang/Object;)Z
	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.shutdown(RetryableEurekaHttpClient.java:92) ~[eureka-client-1.9.17.jar:1.9.17]
	at com.netflix.discovery.shared.transport.TransportUtils.shutdown(TransportUtils.java:40) ~[eureka-client-1.9.17.jar:1.9.17]
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:70) ~[eureka-client-1.9.17.jar:1.9.17]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89) ~[eureka-client-1.9.17.jar:1.9.17]
	at com.netflix.discovery.DiscoveryClient.renew(DiscoveryClient.java:867) ~[eureka-client-1.9.17.jar:1.9.17]
	at com.netflix.discovery.DiscoveryClient$HeartbeatThread.run(DiscoveryClient.java:1436) [eureka-client-1.9.17.jar:1.9.17]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_181]
	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) [na:1.8.0_181]
	at java.util.concurrent.FutureTask.run(FutureTask.java) [na:1.8.0_181]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_181]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_181]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]

根据错误信息,定位到具体

  • 提示:没有这个方法isObjectRegistered()
NoSuchMethodError: com.netflix.servo.monitor.Monitors.isObjectRegistered(Ljava/lang/String;Ljava/lang/Object;)Z
  • 但实际上有这个方法
    在这里插入图片描述
  • 定位所属依赖,如下:
    发现有两个版本不同的”servo-core“ 依赖,在v0.12.21 中有该方法,但是在v0.7.2 中是没有。
    在这里插入图片描述
    异常是从Eureka 中 的 com.netflix.discovery.DiscoveryClient 抛出,说明Eureka client 加载的是低版本的依赖,没有使用高版本的依赖。

2、解决依赖冲突

  • 我们需要将低版本的依赖给排除调就可以了。

  • 需要先找到该依赖是从哪里引入的,排除即可。

  • 1、选中异常项目,点击箭头所指
    在这里插入图片描述
    如图:
    在这里插入图片描述

  • 搜索冲突的依赖:Ctrl+F,选中回车,找到需要排除的版本
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/a7e4728d83b84030b0d2e51fe9844283.png
    在这里插入图片描述

  • 定位所属依赖
    最终跟踪定位到 v0.7.2 属于 里面
    所以在zuul 依赖中将其排除即可。
    在这里插入图片描述

  • 排除依赖
    选中需要排除的依赖,鼠标右键,Exclude 移除
    在这里插入图片描述
    自动排除:
    在这里插入图片描述

  • 完整依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
    <exclusions>
        <exclusion>
            <artifactId>servo-core</artifactId>
            <groupId>com.netflix.servo</groupId>
        </exclusion>
    </exclusions>
</dependency>
  • 重启项目,问题解决
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花荣白起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值