1. 程式人生 > 其它 >org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException

org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException

1、問題概述

將一個 springboot 專案打成 Jar 包後,在本地使用 java -jar 命令啟動服務,服務能啟動成功,但是會有如下報錯資訊。

說明:
配置檔案為外接配置檔案,與 jar 處於同目錄下
啟動命令如下:

java -jar blade-gateway.jar  --spring.config.location=application-dev.yml --server.port=80

2、問題分析

此報錯資訊指向的問題是,配置檔案 application.yml 中含有中文,而服務預設啟動的編碼格式伺服器系統相關,使用的編碼格式無法正確讀取配置檔案中的中文資訊,導致報錯。

3、解決方案

  • 可以將配置檔案 application.yml 中的中文刪除,再嘗試

  • 可以嘗試將檔案內容複製出來,再重新複製回去

  • 可以在啟動命令中加上 編碼配置,指定編碼,修改後的啟動命令如下:

    java -Dfile.encoding=utf-8 -jar blade-gateway.jar  --spring.config.location=application-dev.yml --server.port=80
    

    添加了 -Dfile.encoding=utf-8

  • 如果是直接在 ide 中啟動,報錯,則也可以直接在 ide 中修改配置檔案編碼格式

    以 idea 為例:

說明:以上4種方案,可以一一嘗試,並無先後順序