本文主要是介绍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;)Zat 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,选中回车,找到需要排除的版本
-
定位所属依赖
最终跟踪定位到 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>
- 重启项目,问题解决
这篇关于zuul Monitors.isObjectRegistered(Ljava/lang/String;Ljava/lang/Object;)Z的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!