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 , 但是项目一启动就报错, 读取不到配置文件

#分析问题
对异常处下断点调试, 发现读取的配置文件为 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 文件属性字符集 ≠ 文件内容字符集 , 如下图 第一行的中文注释就已经乱码了

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

#总结
之所以 Global Encoding: UTF-8 和 Project Encoding: GBK 会不一致有以下几种可能
- IDEA导入了错误的配置设置
- 之前有项目用GBK字符集, 所以
Project Encoding: 设置被调整过

浙公网安备 33010602011771号