新闻详情

新闻详情

首页 / 资讯中心 / 详情

解决项目启动报 Cannot invoke “com.alibaba.nacos.client.naming.backups.FailoverDataSource.getSwitch()“...

发布时间:2026/9/3 10:20:51来源:尧图网络
解决项目启动报 Cannot invoke “com.alibaba.nacos.client.naming.backups.FailoverDataSource.getSwitch()“...
解决项目启动报java.lang.NullPointerException: Cannot invoke com.alibaba.nacos.client.naming.backups.FailoverDataSource.getSwitch() because the return value of com.alibaba.nacos.client.naming.backups.FailoverReactor.access$000(com.alibaba.nacos.client.naming.backups.FailoverReactor) is null问题发现问题解决排查方式一在本地或者测试环境模拟生产环境排查方式二使用命令java -jar执行一下生产的包问题发现最近在生产环境启动时报了一个错误束手无策因为本地和测试环境都没有出现这个问题。完整的错误信息如图环境如下Nacos版本Nacos2.2.3SpringCloud版本Spring Cloud 2023.0.13JDK版本17问题解决本来以为baidu能给我答案最后发现根本搜不到有关该错误的文章。然后就开始了苦逼的排查之路。排查方式一在本地或者测试环境模拟生产环境然后我本地搭建了一个和生产环境一模一样的Nacos版本然后将配置文件改成本地的地址示例代码如下spring:cloud:nacos:config:server-addr:127.0.0.1:8848discovery:server-addr:127.0.0.1:8848然后启动项目未发现异常情况。排查方式二使用命令java -jar执行一下生产的包找到从生产上下载的包打开cmd窗口执行命令java-jarxxx.jar然后发现问题出现了后来我又陆续切换了好几个分支打包后重试均出现该问题。神奇的很命令启动有这个问题Idea启动就没这个问题。只要能复现问题就好办然后就开始定位问题我把该项目的所有代码全删了然后打包重新运行发现正常启动没有异常错误。然后就一个类一个类的删最后定位到一个初始化Bean的方法上面示例代码如下RestControllerpublicclassAppControllerimplementsInitializingBean{ResourceprivateEchoServiceechoService;OverridepublicvoidafterPropertiesSet()throwsException{echoService.echo(hello);}}当我把afterPropertiesSet()方法中的代码注释打包后启动依旧没有发现问题。最终定位在RPC接口的问题上。回过头去看日志你会发现在日志中第一次出现错误的位置结合上下文基本上可以定位问题所在位置。然后再来分析为什么会出现这种情况在Spring Bean的afterPropertiesSet()初始化阶段访问了Nacos客户端相关资源Nacos服务发现来获取服务地址间接依赖Nacos但此时Nacos客户端尚未完成初始化导致依赖的FailoverReactor等组件为null最终触发空指针异常。虽然Nacos没有注册完成那为什么RPC接口却成功响应结果了呢Nacos服务发现的核心功能已临时可用但内部故障转移Failover组件的初始化滞后导致首次调用成功后后续的故障转移检查触发空指针异常。为什么该错误不会影响项目正常运行Nacos客户端的FailoverReactor故障转移组件属于辅助功能其初始化异常通常发生在独立的异步线程Nacos内部的定时任务线程每5秒执行一次所以导致日志不断增长为什么Idea启动正常使用命令启动就有问题两种运行环境下的初始化时序、类加载机制或线程调度存在差异导致Nacos客户端在IDEA中 “侥幸” 先于异步Feign调用完成初始化而打包后这种时序平衡被打破。IDEA运行默认会添加一些调试相关的JVM参数如-agentlib:jdwp用于调试这些参数可能会减慢JVM启动速度或禁用某些类加载 / 初始化优化如提前编译、类加载并行化知道问题所在和原因就可以很快解决这个问题我们可以等待所有Bean初始化完成后再去执行对应的方法这样就不会出现容器未初始化完成的情况示例代码如下RestControllerpublicclassAppController{ResourceprivateEchoServiceechoService;EventListener(ContextRefreshedEvent.class)// 指定监听的事件类型publicvoidhandleContextRefreshed(){echoService.echo(hello);System.out.println(容器就绪处理后续操作...);}}ContextRefreshedEvent是Spring框架中一个重要的容器事件当Spring应用上下文ApplicationContext完成初始化或刷新时触发。它标志着容器内所有Bean已完成创建、依赖注入和初始化包括PostConstruct方法执行完毕是监听容器初始化完成的核心事件。如果你的错误并不是该问题导致的就需要考虑是否是依赖导致检查依赖版本或者升级Nacos客户端解决该问题。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

C#实战无人值守地磅称重系统:架构设计与工业级实现 2026/9/3 11:12:06

C#实战无人值守地磅称重系统:架构设计与工业级实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AgentScope 浏览器智能体 BrowserAgent:让大模型替你操作网页的完整上手指南 2026/9/3 11:12:06

AgentScope 浏览器智能体 BrowserAgent:让大模型替你操作网页的完整上手指南

AgentScope 浏览器智能体 BrowserAgent:让大模型替你操作网页的完整上手指南 【免费下载链接】agentscope Build and run agents you can see, understand and trust. 项目地址: https://gitcode.com/GitHub_Trending/ag/agentscope 你有没有过这样的经历&am…

阅读更多 →
openai-agents-python Session 系统完整指南:5 种记忆后端选型表、3 个高频坑、生产落地清单 2026/9/3 11:12:06

openai-agents-python Session 系统完整指南:5 种记忆后端选型表、3 个高频坑、生产落地清单

openai-agents-python Session 系统完整指南:5 种记忆后端选型表、3 个高频坑、生产落地清单 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-age…

阅读更多 →
正确交易认知:指标是状态映射工具,如何验证并接入交易系统 2026/9/3 11:12:06

正确交易认知:指标是状态映射工具,如何验证并接入交易系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
FaceFusion 参数调优指南:5 个关键设置让换脸自然又快 2026/9/3 11:12:06

FaceFusion 参数调优指南:5 个关键设置让换脸自然又快

FaceFusion 参数调优指南:5 个关键设置让换脸自然又快 【免费下载链接】facefusion Industry leading face manipulation platform 项目地址: https://gitcode.com/GitHub_Trending/fa/facefusion 如果你换完脸的人脸肤色发灰、表情僵硬,或者五官…

阅读更多 →
Reflex 性能实测:纯 Python 全栈 Web 框架的基准测试跑分|Lighthouse 能稳定到 90+ 吗? 2026/9/3 11:09:05

Reflex 性能实测:纯 Python 全栈 Web 框架的基准测试跑分|Lighthouse 能稳定到 90+ 吗?

Reflex 性能实测:纯 Python 全栈 Web 框架的基准测试跑分|Lighthouse 能稳定到 90 吗? 【免费下载链接】reflex 🕸️ Web apps in pure Python 🐍 项目地址: https://gitcode.com/GitHub_Trending/re/reflex Re…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞