Trae | SpringBoot项目报错:org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputExcepti
微服务项目本地运行时,从Nacos读取YAML配置文件触发MalformedInputException异常,原因是Windows默认GBK编码与含中文注释的UTF-8配置文件冲突。解决方案是在VSCode的settings.json中添加JVM参数-Dfile.encoding=UTF-8强制使用UTF-8编码解析。通过统一工作区调试配置,避免因系统编码差异导致的字符解析错误,确保项目正常启动。
·
项目场景:
项目场景:微服务项目拉取后,本地运行,读取nacos中的配置文件后,导致运行的程序中断。
问题描述
报错:org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1
parse data from Nacos error,dataId:shared-spring.yaml,data:spring:
jackson:
default-property-inclusion: non_null
main:
allow-bean-definition-overriding: true
mvc:
pathmatch:
#解决异常:swagger Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
#因为Springfox使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher
matching-strategy: ant_path_matcher
org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1
原因分析:
- Nacos 配置中心在读取和存储 YAML 配置文件时,默认使用的是 UTF-8 编码。
- 现有的Nacos 配置文件(shared-spring.yaml)中包含了中文注释。
- 当项目运行或打包启动时,如果 JVM 的默认编码不是 UTF-8,解析器在读取这些中文字符时就会发生乱码,从而抛出上述异常。
Windows 命令行使用的GBK编码格式,Trae中默认会读取。
解决方案:
1、修改.vscode/settings.json
.vscode/settings.json 文件用于配置当前工作区(项目)的特定设置,可以为所有的 Java 调试任务设置统一的默认参数。
在.vscode/settings.json中,添加以下内容:
"java.debug.settings.vmArgs": "-Dfile.encoding=UTF-8 ",
如下图所示:
2、修改.vscode\launch.json
概述:
- 一般来说,此处的优先级会更高,会更加容易生效。但是,经过多次尝试发现添加的参数都未能生效。所以,以下内容仅供尝试使用,不能保证生效。
在.vscode/launch.json中,添加以下内容:
{
"type": "java",
"name": "ExamApplication",
"request": "launch",
"mainClass": "com.tianji.exam.ExamApplication",
"projectName": "tj-exam",
// 方式一:作为程序参数传入(Spring Boot 推荐)
"args": ["--spring.profiles.active=local"],
// 方式二:作为 JVM 系统属性强制传入
//"vmArgs": "-Dspring.profiles.active=local"
}
总结
.vscode/settings.json 文件用于配置当前工作区(项目)的特定设置,可以为所有的 Java 调试任务设置统一的默认参数。
- 在settings.json 文件中,添加虚拟机参数:
- “java.debug.settings.vmArgs”: "-Dfile.encoding=UTF-8 ",
- 即可处理以上问题。
各位再见!这里是 鳄鱼杆的空间,钓……鳄鱼的杆儿!
期待下次再会!
愿你的每一次垂钓之旅都能满载而归。

更多推荐



所有评论(0)