springboot,java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.yml'

springboot,java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.yml'

ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.yml'

#问题出现

git版本反复比对 src/main/resources/application.yml 配置文件, 没有缩进错误, 没有异常字符,是正确的配置 , 本且编辑器下方的 文件类型区域展示 File Encooding: UTF-8 , 但是项目一启动就报错, 读取不到配置文件
image

#分析问题

对异常处下断点调试, 发现读取的配置文件为 NULL NULL NULL ... , 再看看报错的异常

java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.yml'
...
Caused by: org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1
...
Caused by: java.nio.charset.MalformedInputException: Input length = 1

关键就在于 classpath:/application.yml java.nio.charset, 它不是说 src/main/resources/application.yml 文件的字符集有问题, 而是 target/classes/application.yml 文件属性字符集 ≠ 文件内容字符集 , 如下图 第一行的中文注释就已经乱码了
image

#解决问题

到这里问题就明显了, 赶快找到 IDEA->File->Settings->Editor->File Encodings 果然看到 Global Encoding: UTF-8Project Encoding: GBK ,他们编码不一致, 然后改回 Project Encoding: UTF-8 , 删除项目整个 target 文件夹, 再重新编译, target目录下的target/classes/application.yml 文件也是 UTF-8字符集, 中文内容也没有乱码, 项目启动一切正常!
image

#总结

之所以 Global Encoding: UTF-8Project Encoding: GBK 会不一致有以下几种可能

  1. IDEA导入了错误的配置设置
  2. 之前有项目用GBK字符集, 所以 Project Encoding: 设置 被调整过
posted @ 2025-03-27 09:59  Journey&Flower  阅读(2)  评论(0)    收藏  举报