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

org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1異常問題解決

    • 一、問題背景
    • 二、錯誤現象
    • 三、原因分析
      • 核心問題:字符集不匹配
    • 四、解決過程
      • 試錯路徑記錄
    • 五、最終方案
      • 1.創建launch.json文件,修改VSCode啟動配置
      • 2.在`.vscode/launch.json`中添加`encoding`字段,顯式指定字符集為UTF-8:
      • 3.驗證步驟,確認YAML解析錯誤已解決
    • 6.總結與反思
      • 1.經驗教訓
      • 2.擴展建議

#SpringBoot #VSCode #YAMLException #編碼問題 #開發工具配置

一、問題背景

開發工具從IntelliJ IDEA切換到**Visual Studio Code(VSCode)**后,啟動Springboot項目時出現YAML解析錯誤。該項目采用Nacos存儲了Springboot的核心配置,包括數據庫連接信息、Redis連接信息、服務配置等

二、錯誤現象

啟動時報錯信息:

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

在這里插入圖片描述

關鍵錯誤點:MalformedInputException 表明輸入流中存在無法解析的字符,通常由字符集不匹配導致。

三、原因分析

核心問題:字符集不匹配

  • Nacos配置:配置中心存儲的YAML文件默認使用UTF-8編碼
  • VSCode環境:默認未指定運行時字符集,可能使用系統默認編碼(如GBK)
  • 工具差異:IntelliJ IDEA默認使用UTF-8編碼,因此未出現此問題

四、解決過程

試錯路徑記錄

嘗試方案操作步驟結果狀態根本原因分析
檢查Nacos配置確認Nacos中的YAML文件編碼為UTF-8無變化配置本身無問題,問題出在解析環節
修改VSCode設置全局設置VSCode文件編碼為UTF-8部分解決僅影響編輯器,不影響運行時環境
調整啟動配置修改.vscode/launch.json,添加字符集配置成功解決顯式指定運行時字符集為UTF-8

五、最終方案

1.創建launch.json文件,修改VSCode啟動配置

在這里插入圖片描述

2.在.vscode/launch.json中添加encoding字段,顯式指定字符集為UTF-8:

在這里插入圖片描述

{"configurations": [{"type": "java","name": "Springboot應用","request": "launch","cwd": "${workspaceFolder}","mainClass": "com.example.Application","projectName": "demo-project","args": "","envFile": "${workspaceFolder}/.env","encoding": "UTF-8"  // 關鍵配置:指定運行時字符集}]
}

3.驗證步驟,確認YAML解析錯誤已解決

  1. 保存修改后的launch.json文件
  2. 重啟VSCode
  3. 重新啟動Springboot項目,確認YAML解析錯誤已解決
    在這里插入圖片描述

6.總結與反思

1.經驗教訓

  1. 字符集一致性:確保開發工具、配置文件和運行時環境的字符集保持一致(推薦統一使用UTF-8)
  2. 工具差異處理:切換開發工具時,需注意默認配置差異,必要時顯式指定關鍵參數
  3. 調試技巧:遇到編碼問題時,優先檢查:
    • 文件本身的編碼格式
    • 編輯器的顯示編碼設置
    • 運行時環境的字符集配置

2.擴展建議

  • 團隊開發時,建議將.vscode/launch.json納入版本控制,統一開發環境配置
  • 對于多環境部署,可在啟動腳本中統一指定字符集參數:-Dfile.encoding=UTF-8

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/98000.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/98000.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/98000.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C語言】深入理解指針(5)

目錄 sizeof和strlen 1.sizeof 2.strlen 3. sizeof 和 strlen 的對比 sizeof和strlen 1.sizeof sizeo正名:sizeof是操作符,不是函數,sizeof是操作符,括號內如果有計算不會進行計算sizeof 是操作符,用于計算變量所…

動態代理設計模式

JDK動態代理實現 動態代理利用了JDK API,動態地在內存中構建代理對象,從而實現對目標對象的代理功能.動態代理又被稱為JDK代理或接口代理. 靜態代理與動態代理的區別: 靜態代理在編譯時就已經實現了,編譯完成后代理類是一個實際的class文 動態代理是在運行時動態生成的,即編譯…

《Html泛型魔法學院:用霍格沃茨風格網頁教授集合框架》

一、項目概述 這個創意教學網頁,將Java泛型與集合框架知識融入霍格沃茨魔法世界主題。通過沉浸式UI設計和交互式代碼練習,讓抽象的技術概念變得生動有趣。主要技術棧包括: HTML5語義化結構Tailwind CSS框架Font Awesome圖標庫純JavaScript交…

學習PaddlePaddle--環境配置-PyCharm + Conda?

第一階段:安裝與配置 Python 和 Conda?? 雖然 PyCharm 可以管理環境,但我們先獨立準備好 Conda 環境,這樣更清晰可靠。 ??1. 安裝 Miniconda (Python 環境管理)?? 1. ??下載??: ? 訪問 Miniconda 官網。 ? 選擇 ??M…

【數據庫】Sql Server數據庫中isnull、iif、case when三種方式的使用和空值判斷

大家好,我是全棧小5,歡迎來到《小5講堂》。 這是《Sql Server》系列文章,每篇文章將以博主理解的角度展開講解。 溫馨提示:博主能力有限,理解水平有限,若有不對之處望指正! 目錄前言ISNULL用法c…

【藍橋杯選拔賽真題64】C++最大空白區 第十四屆藍橋杯青少年創意編程大賽 算法思維 C++編程選拔賽真題解

C++最大空白區 第十四屆藍橋杯青少年創意編程大賽C++選拔賽真題 博主推薦 所有考級比賽學習相關資料合集【推薦收藏】 1、C++專欄 電子學會C++一級歷年真題解析 電子學會C++二級歷年真題解析

試用Augment編寫python腳本實現智能家居3D環境交互響應

環境配置 VS Code中直接安裝Augment擴展,然后郵箱登錄就能獲得7天的試用。 從如下位置安裝3D建模軟件Blender: https://www.blendercn.org/downloadme#xiazai Blender 是一款免費開源的 3D 創作套件。它支持整個三維流程:建模、綁定、動畫…

【架構師干貨】系統架構設計

1. 軟件架構概述 從需求分析到軟件設計之間的過渡過程稱為軟件架構。只要軟件架構設計好了,整個軟件就不會出現坍塌性的錯誤,即不會崩潰。 架構設計就是需求分配,將滿足需求的職責分配到組件上。 軟件架構為軟件系統提供了一個結構、行為和屬…

Java設計模式之結構型—享元模式

Java中最常用的設計模式-CSDN博客 把“不可變且可復用”的細粒度對象緩存起來,用“共享”代替“新建”,從而節省內存。 經典場景 字符串常量池、Integer.valueOf(-128~127)、Android Message.obtain() 游戲粒子、編輯器字形、地圖瓦片、線程池中的任務…

cursor+python輕松實現電腦監控

小伙伴們,今天我們利用cursor不寫一行代碼開發一個電腦的系統狀態監控小應用!下載安裝cursor:網址:https://www.cursor.com/cn下載后雙擊安裝輸入提示詞: 制作一個winswos應用,實現顯示時間精確到秒&…

信號調制與解調 matlab仿真

信號調制與解調 matlab仿真 原始信號--頻譜為cos(Wt*w)函數,外形如饅頭調制解調傅里葉變換測試FT的頻譜是否為鋸齒波理想低通濾波器,截至頻率Wm傅里葉變換頻譜為鋸齒波函數的時域信號函數傅里葉變換調制頻率1理想低通濾波調制頻率2理想低通濾波 % 調制定理演示Dem…

IIS服務器下做瀏覽器緩存

你的這個問題問得非常好&#xff0c;很多開發者在同時使用重寫和緩存時都會遇到。簡單來說&#xff1a;你添加的 <staticContent> 和 <clientCache> 配置本身不會影響或干擾 重寫規則的工作。它們各司其職&#xff0c;在 IIS 處理請求的不同階段發揮作用。 但是&a…

Flutter 3.35.2 以上版本中 數字轉字符串的方法指南

在 Flutter 3.35.2 (對應 Dart 2.19 及以上版本) 中&#xff0c;將數字轉換為字符串主要依賴于 Dart 語言本身提供的原生方法。這些方法穩定且向后兼容。下面我為你介紹幾種主要的方法和案例。 &#x1f522; 數字轉字符串的基本方法方法名適用類型描述常用場景toString()int, …

C#基礎(⑤ProcessStartInfo類和Process類)

1. 它是什么&#xff1f;ProcessStartInfo 是 C# 里的一個類&#xff08;屬于 System.Diagnostics 命名空間&#xff09;&#xff0c;作用是&#xff1a;定義要啟動的程序路徑&#xff08;比如 notepad.exe&#xff09;設置啟動時的參數&#xff08;比如打開哪個文件&#xff0…

《設計模式之禪》筆記摘錄 - 19.備忘錄模式

備忘錄模式的定義備忘錄模式(Memento Pattern)提供了一種彌補真實世界缺陷的方法&#xff0c;讓“后悔藥”在程界序的世界中真實可行&#xff0c;其定義如下&#xff1a;Without violating encapsulation, capture and externalize an objects internal state so that the obje…

22、Jenkins容器化部署Java應用

22、Jenkins容器化部署Java應用 1、準備Dockerfile 將Dockerfile文件放入項目目錄下 FROM registry.cn-hangzhou.aliyuncs.com/xx_blog/openjdk:21-jdk LABEL maintainer"xxqq.com" #復制打好的jar包 COPY target/*.jar /app.jar RUN apk add -U tzdata; \ ln -sf /…

基于單片機智能水龍頭/智能洗漱臺設計

傳送門 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目速選一覽表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目功能速覽 概述 該設計采用單片機作為核心控制器&#xff0c;結合紅外傳感器、水流傳感器和電磁閥等模塊&#xf…

GD32入門到實戰30--產品配置參數存儲方案 (EEPROM)

我們之前已經實現eeprom的驅動了&#xff0c;我們在應用層實現產品配置參數存儲方案我們要實現&#xff1a;原本設定的modebus從機&#xff08;單片機&#xff09;地址是01&#xff0c;存儲在eeprom里&#xff0c;按下按鍵后修改地址為03&#xff0c;重新上電modebus從機&#…

find_code 插件 react_vite

find_code 插件 react_vite const fs require("fs"); const path require("path"); const parser require("babel/parser"); const traverse require("babel/traverse").default; const generate require("babel/generator&…

手機秒變全棧IDE:Claude Code UI的深度體驗

還在為只能在命令行中使用Claude Code而苦惱嗎&#xff1f;想在移動設備上繼續你的AI編程對話嗎&#xff1f;Claude Code UI的出現徹底改變了這一切。這個開源項目為Anthropic官方的Claude Code CLI工具提供了現代化的Web界面&#xff0c;讓你能夠在任何設備、任何地方與AI編程…