开发者社区 > 云原生 > 微服务 > 正文

nacos作为配置中心,war包部署服务,这个配置报错,怎么办?

nacos作为配置中心,war包部署服务,spring.config.import: nacos:xxxx.yml 这个配置报错?Caused by: org.springframework.boot.context.config.ConfigDataResourceNotFoundException: Config data resource 'NacosConfigDataResource{properties=NacosConfigProperties{serverAddr='127.0.0.1:8848', encode='null', group='DEFAULT_GROUP', prefix='null', fileExtension='yml', timeout=3000, maxRetry='null', configLongPollTimeout='null', configRetryTime='null', enableRemoteSyncConfig=false, endpoint='null', namespace='f4028b12-63b1-4208-8907-c4403c9d80a6', accessKey='null', secretKey='null', ramRoleName='null', contextPath='null', clusterName='null', name='null'', shares=[Config{dataId='config.yml', group='DEFAULT_GROUP', refresh=true}], extensions=null, refreshEnabled=true}, optional=false, profiles=[Profiles@186d45d8 active = '[dev]', default = '[default]', accepted = '[dev]'], config=NacosItemConfig{group='DEFAULT_GROUP', dataId='frontConfigPage.yml', suffix='yml', refreshEnabled=true, preference=null}}' via location 'nacos:frontConfigPage.yml' cannot be found
at org.springframework.boot.context.config.ConfigDataResourceNotFoundException.withLocation(ConfigDataResourceNotFoundException.java:97)
at org.springframework.boot.context.config.ConfigDataImporter.handle(ConfigDataImporter.java:150)
at org.springframework.boot.context.config.ConfigDataImporter.load(ConfigDataImporter.java:141)
at org.springframework.boot.context.config.ConfigDataImporter.resolveAndLoad(ConfigDataImporter.java:87)
at org.springframework.boot.context.config.ConfigDataEnvironmentContributors.withProcessedImports(ConfigDataEnvironmentContributors.java:116)
at org.springframework.boot.context.config.ConfigDataEnvironment.processWithProfiles(ConfigDataEnvironment.java:311)
at org.springframework.boot.context.config.ConfigDataEnvironment.processAndApply(ConfigDataEnvironment.java:232)
at org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor.postProcessEnvironment(ConfigDataEnvironmentPostProcessor.java:102)
at org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor.postProcessEnvironment(ConfigDataEnvironmentPostProcessor.java:94)
at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEnvironmentPreparedEvent(EnvironmentPostProcessorApplicationListener.java:102)
at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEvent(EnvironmentPostProcessorApplicationListener.java:87)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131)
Caused by: org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1
at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:218)
at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176)
at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171)
at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126)
at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1218)
at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:329)
at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:251)
at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:214)
at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:166)
at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:156)
at org.yaml.snakeyaml.composer.Composer.checkNode(Composer.java:93)
at org.yaml.snakeyaml.constructor.BaseConstructor.checkData(BaseConstructor.java:124)
at org.yaml.snakeyaml.Yaml$1.hasNext(Yaml.java:509)
at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:199)
at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:166)
at org.springframework.boot.env.OriginTrackedYamlLoader.load(OriginTrackedYamlLoader.java:88)
at org.springframework.boot.env.YamlPropertySourceLoader.load(YamlPropertySourceLoader.java:50)
at com.alibaba.cloud.nacos.parser.NacosDataParserHandler.parseNacosData(NacosDataParserHandler.java:92)
at com.alibaba.cloud.nacos.configdata.NacosConfigDataLoader.pullConfig(NacosConfigDataLoader.java:145)
at com.alibaba.cloud.nacos.configdata.NacosConfigDataLoader.doLoad(NacosConfigDataLoader.java:82)
at com.alibaba.cloud.nacos.configdata.NacosConfigDataLoader.load(NacosConfigDataLoader.java:69)
at com.alibaba.cloud.nacos.configdata.NacosConfigDataLoader.load(NacosConfigDataLoader.java:58)
at org.springframework.boot.context.config.ConfigDataLoaders.load(ConfigDataLoaders.java:108)
at org.springframework.boot.context.config.ConfigDataImporter.load(ConfigDataImporter.java:132)
... 70 more
Caused by: java.nio.charset.MalformedInputException: Input length = 1
at java.nio.charset.CoderResult.throwException(CoderResult.java:281)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125)
at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183)
... 93 more
[2024-04-15 06:09:31,898] Artifact osp-lcdp-service:war: Error during artifact deployment. See server log for details.

展开
收起
真的很搞笑 2024-04-23 12:32:22 149 0
1 条回答
写回答
取消 提交回答
  • 首先,我们来分析问题的原因。根据您提供的错误堆栈信息,您的应用程序在尝试使用spring.config.import: nacos:frontConfigPage.yml配置从Nacos作为配置中心获取配置数据时,遭遇了ConfigDataResourceNotFoundException异常。异常指出无法找到资源NacosConfigDataResource,其详细配置为NacosConfigProperties,包括服务器地址、分组名、文件扩展名等信息。这意味着Spring Boot在尝试从Nacos获取指定的frontConfigPage.yml配置文件时遇到了问题,无法正确识别或连接到指定的Nacos服务器。
    基于我了解的知识中提供的信息,我们并没有直接针对spring.config.import搭配Nacos使用时出现ConfigDataResourceNotFoundException的解决方案。但结合错误信息和我了解的知识中关于Nacos的基本使用方法,我们可以推测出可能导致该问题的一些原因:

    Nacos服务器未运行或地址不正确:确保您在spring.config.import配置中指定的Nacos服务器地址(serverAddr='127.0.0.1:8848')正确无误且Nacos服务器正在运行。

    配置文件名或分组名不匹配:检查frontConfigPage.yml是否确实存在于Nacos服务器中,并确认分组名DEFAULT_GROUP是否与实际存储配置文件的分组一致。

    Nacos认证或命名空间问题:虽然错误信息中未显示认证相关的属性(如accessKey、secretKey、namespace),但如果您在Nacos上启用了安全认证或使用了特定命名空间,确保这些属性在应用程序的配置中正确设置。

    网络问题或防火墙限制:确保应用程序所在的环境可以正常访问Nacos服务器。如有必要,检查防火墙设置,确保端口8848开放。

    由于我了解的知识中并未提供针对此问题的直接解决步骤,我无法为您提供详细的可执行步骤。然而,您可以参照上述可能的原因进行自查和调整,以解决ConfigDataResourceNotFoundException异常:

    验证Nacos服务器状态:

    确认Nacos服务器已成功启动并在127.0.0.1:8848上监听。

    可以通过浏览器访问http://127.0.0.1:8848/nacos,登录Nacos控制台检查服务器运行情况。

    检查Nacos中的配置文件:

    登录Nacos控制台,确认frontConfigPage.yml文件存在于DEFAULT_GROUP分组下。

    如果文件不存在,请创建或上传正确的配置文件。

    核实Nacos认证与命名空间设置:

    如果Nacos启用了安全认证,确保在应用程序配置中添加了对应的accessKey、secretKey属性。

    如果使用了非默认命名空间,确保在配置中设置了正确的namespace。

    排查网络访问问题:

    从应用程序所在环境尝试ping通127.0.0.1,确保本地环回接口正常。

    如部署在远程服务器,确保服务器能通过telnet 127.0.0.1 8848命令连接到Nacos服务器。

    检查防火墙设置,确保端口8848对外开放。

    综上所述,您需要按照上述可能的原因逐一排查,确保应用程序与Nacos服务器之间的通信无误,以及配置文件在Nacos中正确存储和访问。这样应该能解决spring.config.import: nacos:frontConfigPage.yml引发的ConfigDataResourceNotFoundException问题。 ,此回答整理自钉群“Nacos社区群4”

    2024-04-23 17:02:21
    赞同 1 展开评论 打赏

为微服务建设降本增效,为微服务落地保驾护航。

相关电子书

更多
Nacos架构&原理 立即下载
workshop专场-微服务专场-开发者动手实践营-微服务-使用Nacos进行服务的动态发现和流量调度 立即下载
Nacos 启航,发布第一个版本, 云原生时代助力用户微服务平台建设 立即下载