YAMLException : java.nio.charset.MalformedInputException : Input length = 1

场景还原

有小伙伴反应SpringBoot项目启动异常,但是同组其他伙伴的无问题!

java 复制代码
ERROR org.springframework.boot.SpringApplication  -
Application run failed

org.yaml.snakeyaml.error.YAMLException: 
java.nio.charset.MalformedInputException : Input length = 1

根据异常信息提示,一般是YAML配置文件格式或编码集有问题。

  • yml配置文件不是UTF-8的格式
  • 配置中含有中文注释导致的

异常原因

java.nio.charset定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。

java.nio.charset.MalformedInputException异常表示输入的字符流或字节流无效,即无法解析。
YAML文件是一种文本文件,它使用Unicode字符集编码存储数据。常见的编码格式有UTF-8、UTF-16等。

在SnakeYAML库中,当解析YAML文件时,如果文件的编码格式与解析器的期望不符,就会抛出这个异常。

解决方案

项目的编码格式一般统一为UTF-8

编码集修改

  • 将IDEA的编码设置全部设置为UTF-8
  • 如果1没办法解决还是报同样的错,那么在pom中加入如下配置
java 复制代码
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
    <java.version>1.8</java.version>
</properties>

重新配置yml文件

有两个解决思路:

  1. 将yml配置文件中的中文注释全部删除

    但是本来是需要注释才能对各类配置做特定解释,所以不建议

  2. 新建一个配置文件为UTF-8的文件,将原有配置使用txt文件夹打开,再重新复制到新的yml配置文件中

  3. 如果团队的就复制其他小伙伴的,或者是以前正常运行项目的文件


以上两种方式全部尝试过依然失败告终。

JDK版本修改

仔细检查发现他们小组间未统一JDK版本,有成员尝试新特性jdk11 17 21忘记改回

重新配置JDK版本后,程序正常运行并访问成功!

正常启动效果

java 复制代码
// 大威天龙,大罗法咒,般若诸佛,般若巴嘛轰。哼!雕虫小技,竟敢班门弄斧,大威天龙!//
//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//                   /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//                  | \_|  ''\---/''  |   |                       //
//                  \  .-\__  `-`  ___/-. /                       //
//                ___`. .'  /--.--\  `. . ___                     //
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'========         //
//                           `=---='                              //
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
//              佛祖保佑       永不宕机     永无BUG                    //
相关推荐
你不是我我34 分钟前
【Java 开发日记】HTTP3 性能更好,为什么内网微服务依然多用 HTTP2?HTTP2 内网优势是什么?
java·开发语言·微服务
雪碧聊技术1 小时前
大模型爆火!Java后端如何抓住Agent全栈开发的风口
java·大模型·agent·全栈开发
逻辑驱动的ken2 小时前
Java高频面试场景题25
java·开发语言·深度学习·面试·职场和发展
AI人工智能+电脑小能手3 小时前
【大白话说Java面试题】【Java基础篇】第32题:Java的异常处理机制是什么
java·开发语言·后端·面试
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ4 小时前
通过java后端代码来实现给word内容补充格式文本内容控件,以及 设置控件的标记和标题
java·c#·word
無限進步D5 小时前
Java 面向对象高级 接口
java·开发语言
逸Y 仙X6 小时前
文章二十七:ElasticSearch ES查询模板(Search Template)高效复用实战
java·大数据·数据库·elasticsearch·搜索引擎·全文检索
二哈赛车手6 小时前
新人笔记---Spring AI的Advisor以及其底层机制讲解(涉及源码),包含一些遇见的Spring AI的Advisor缺陷问题的解决方案
java·人工智能·spring boot·笔记·spring
AC赳赳老秦6 小时前
接口测试自动化:用 OpenClaw 对接 Postman,实现批量回归测试、测试报告自动生成与推送
java·人工智能·python·算法·elasticsearch·deepseek·openclaw