问题概述

在进行项目开发过程中,通过Spring Boot整合Alibaba Nacos的服务注册与发现和配置中心时,遇到个梗,启动时打印出一串错误日志信息 “ Failed to rename context [logback] as [nacos] java.lang.IllegalStateException: Context has been already given a name ” ,但是不会影响项目的正常运行和使用,

如下图:

具体错误信息如下:

2021-04-21 18:03:57.947 INFO [main]s.d.s.web.PropertySourcedRequestMappingHandlerMapping.initHandlerMethods:69 -Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
2021-04-21 18:03:57.982 INFO [main]o.s.scheduling.concurrent.ThreadPoolTaskExecutor.initialize:181 -Initializing ExecutorService 'applicationTaskExecutor'
2021-04-21 18:03:58.250 INFO [main]o.s.scheduling.concurrent.ThreadPoolTaskScheduler.initialize:181 -Initializing ExecutorService 'Nacso-Watch-Task-Scheduler'
18:03:58,258 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@748aa7dc - URL [jar:file:/D:/LOCAL_INSTALLER/apache-maven-3.6.3/.m2/repository/com/alibaba/nacos/nacos-client/1.1.4/nacos-client-1.1.4.jar!/nacos-logback.xml] is not of type file
18:03:58,259 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
18:03:58,259 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Will scan for changes in [jar:file:/D:/LOCAL_INSTALLER/apache-maven-3.6.3/.m2/repository/com/alibaba/nacos/nacos-client/1.1.4/nacos-client-1.1.4.jar!/nacos-logback.xml]
18:03:58,259 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeTask scanning period to 30 seconds
18:03:58,260 |-INFO in ch.qos.logback.classic.joran.action.ContextNameAction - Setting logger context name as [nacos]
18:03:58,260 |-ERROR in ch.qos.logback.classic.joran.action.ContextNameAction - Failed to rename context [logback] as [nacos] java.lang.IllegalStateException: Context has been already given a nameat java.lang.IllegalStateException: Context has been already given a nameat     at ch.qos.logback.core.ContextBase.setName(ContextBase.java:194)at  at ch.qos.logback.classic.LoggerContext.setName(LoggerContext.java:107)at   at ch.qos.logback.classic.joran.action.ContextNameAction.body(ContextNameAction.java:31)at  at ch.qos.logback.core.joran.spi.Interpreter.callBodyAction(Interpreter.java:289)at     at ch.qos.logback.core.joran.spi.Interpreter.characters(Interpreter.java:172)at     at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:57)at    at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:165)at    at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:152)at    at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:110)at    at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53)at     at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)at     at com.alibaba.nacos.client.logging.logback.LogbackNacosLogging.loadConfiguration(LogbackNacosLogging.java:44)at    at com.alibaba.nacos.client.utils.LogUtils.<clinit>(LogUtils.java:47)at   at com.alibaba.nacos.client.naming.utils.InitUtils$1.call(InitUtils.java:56)at  at com.alibaba.nacos.client.naming.utils.InitUtils$1.call(InitUtils.java:52)at  at com.alibaba.nacos.client.utils.TemplateUtils.stringEmptyAndThenExecute(TemplateUtils.java:43)at  at com.alibaba.nacos.client.naming.utils.InitUtils.initNamespaceForNaming(InitUtils.java:52)at  at com.alibaba.nacos.client.naming.NacosNamingService.init(NacosNamingService.java:88)at    at com.alibaba.nacos.client.naming.NacosNamingService.<init>(NacosNamingService.java:84)at    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)at   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at   at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at    at com.alibaba.nacos.api.naming.NamingFactory.createNamingService(NamingFactory.java:45)at  at com.alibaba.nacos.api.NacosFactory.createNamingService(NacosFactory.java:76)at   at com.alibaba.cloud.nacos.NacosDiscoveryProperties.namingServiceInstance(NacosDiscoveryProperties.java:486)at  at com.alibaba.cloud.nacos.registry.NacosServiceRegistry.<init>(NacosServiceRegistry.java:47)at   at com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration.nacosServiceRegistry(NacosServiceRegistryAutoConfiguration.java:51)at     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at  at java.lang.reflect.Method.invoke(Method.java:498)

解决办法

经过了一系列的烧脑摸索,一无所获,后,在官方文档上找到了相关问题的阐述(不是解决办法),然后再结合以往经验,终于把问题给解决了。

原来,在基于Spring Boot框架项目开发过程中,集成了Alibaba Nacos的服务注册与发现和配置中心,

因为Spring Boot本身已经集成了日志框架Logback,而在Alibaba Nacos中又集成了一套Logback框架(我顶你个肺,Alibaba Nacos给我们开发者们留了这么大一个坑),

而Alibaba Nacos中的Logback加载要优先于项目自身的Logback框架,在一个项目中其context_name只能定义一次,

所以,在项目启动时,Alibaba Nacos的Logback先加载完成后,再加载项目本身的Logback时就出现了冲突,报错误日志 “ Failed to rename context [logback] as [nacos] java.lang.IllegalStateException: Context has been already given a name ” ,但是不影响使用,

虽然不影响使用,但是作为一个传统的老码畜,看着这个错误日志,实在不爽,所以博主把它个消灭了,

解决这个,只要禁用掉其中一个Logback就可以了,一般禁用外部框架夹带的Logback即可 ,在启动类中加入如下段代码即可:

System.setProperty("nacos.logging.default.config.enabled","false");

完整示例:

@EnableDiscoveryClient
@EnableFeignClients
@EnableSwagger2
@MapperScan({"com....*.mapper","com.....system.*.mapper","com.....*.mapper"})
@SpringBootApplication(scanBasePackages = {"com.....","com....."})
public class ApplicationName {public static void main(String[] args) {System.setProperty("nacos.logging.default.config.enabled","false");SpringApplication.run(ApplicationName.class, args);}}

解决后就能成功启动了,如下图;

参考文献:

【alibaba-nacos】


好了,关于 Spring Boot整合Nacos时遇到java.lang.IllegalStateException: Context has been already given a name 的解决办法  就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。 
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。


作       者: 华    仔
联系作者: who.seek.me@java98k.vip
来        源: CSDN (Chinese Software Developer Network)
原        文: https://blog.csdn.net/Hello_World_QWP/article/details/117597111
版权声明: 本文为博主原创文章,请在转载时务必注明博文出处!

Spring Boot整合Nacos时遇到 java.lang.IllegalStateException: Context has been already given a name 的解决办法相关推荐

  1. Spring Boot与Log4j2集成之java.lang.IllegalStateException: Logback configuration error detected:

    引言: 一个问题的分析与解决过程是表与里的过程,是一个大胆猜测与小心求证的过程,spring boot与log4j2的集成过程中,我将描述一下分析这个问题的思路和过程. 我一直强调一点: 重要的不是解 ...

  2. spring boot 启动 nested exception is java.lang.IllegalStateException

    2019独角兽企业重金招聘Python工程师标准>>> 在启动spring boot 项目时报错,之前都是OK的,只是我引用了内置的tomcat包就报错了 <dependenc ...

  3. java.lang.IllegalStateException: Failed to introspect Class报错原因和解决办法

    这个报错其实就是没有找到要加载的类,一般在启动的时候报错. 加载不到的类有两种情况,一种是直接找不到要加载的依赖包,或者添加了依赖包后没有加载进入,需要看看是不是 maven 的设置问题,重新刷新加载 ...

  4. nested exception is java.lang.IllegalStateException: Context namespace element 'annotation-config' a

    公司还用的是spring低版本,今天用jre 8测试了一下,发现错误: Unexpected exception parsing XML document from class path resour ...

  5. java.lang.IllegalStateException: Context namespace element ‘annotation-config’ and its parser class

    项目中用的是spring低版本(2.5.6),今天用jre 8测试了一下,发现错误: Unexpected exception parsing XML document from class path ...

  6. java.lang.IllegalStateException: Unable to read meta-data for class 问题的解决

    java.lang.IllegalStateException: Unable to read meta-data for class 问题的解决 参考文章: (1)java.lang.Illegal ...

  7. idea使用spring框架Exception in thread main java.lang.IllegalStateException错误

    自己在用idea自动导包使用spring框架的时候 出现如下错误异常: Exception in thread "main" java.lang.IllegalStateExcep ...

  8. Spring Cloud RestTemplate报错:java.lang.IllegalStateException: No instances available for xxx

    java.lang.IllegalStateException: No instances available for XXXX 一.问题复现 最近搭建springCloud项目,搭建Eureka,多 ...

  9. 错误码500:消息 java.lang.IllegalStateException: (No output folder)无输出目录解决方法

    本文的解决方法是刚安装好tomcat后就无法正常运行的情况.不涉及项目 安装tomcat有两种方式,一个是解压缩版本,一个是安装版,当出现这个问题时一般为解压缩版本才出现 提示错误如下:localho ...

最新文章

  1. LeetCode简单题之字符串中的单词数
  2. vue父子组件写法,数据传递,顺便封装 element-ui的弹窗组建
  3. Struts2笔记——第一个实例HelloWorld
  4. 《看透springmvc源码分析与实践》读书笔记二
  5. Vue.js组件化开发实践
  6. 研华电脑510上电自启_研华工控机怎么设置u盘启动_研华工控机U盘引导方法
  7. 数据库半年回顾:国外波澜不惊,国内势如破竹
  8. Facebook再次被曝通过至少11款应用收集用户私密信息
  9. Spring 整合Mybatis Mapper动态代理方法
  10. open cv+C++错误及经验总结(三)
  11. 【礼仪大赛策划方案常识】 什么是正装
  12. 个人博客前后台整站开发——模板免费下载
  13. 2021MySql-8.0.26安装详细教程(保姆级)
  14. Win10用注册表开启任务栏透明
  15. 只利用 phpstudy 如何运行PHP文件 超详细教程
  16. 四川贝利思科技:拼多多开店的优势所在
  17. 大数据发展规划及技术详解
  18. iVMS-4200 Vs区别_68790红单足球预测 法甲 21:00 安格斯 VS 梅斯
  19. 《C语言程序设计》江宝钏主编-习题5-3-动态最大值!!!
  20. 启用Win11原生支持的DoH(DNS over HTTPS)和配置自定义的DoH服务

热门文章

  1. 丁香园样式库DXY-UI正式开源!
  2. PolyPhen-2软件预测基因突变是否有害
  3. 经济学十大原理之二:理性人考虑边际量
  4. Go中的uil 指的是什么
  5. 电信、网通、铁通各地DNS
  6. 地球超2亿蛋白质结构全预测,AlphaFold引爆「蛋白质全宇宙」!
  7. 有没有一种手机桌面便签记事本可以把日常安排写在上面并提醒自己
  8. VirtualBox7.0 虚拟机直接挂载物理硬盘
  9. 钻石图片html代码,如何使用css绘制钻石的方法
  10. html网页设计作品初级,《HTML网页设计技术》教案.doc