SpringBoot啟動java.nio.charset.MalformedInputException: Input length = 1報錯的解決方案
最近新搭的一個eureka項目,啟動時,會報MalformedInputException
這個異常,
百度了很久,網上說的千篇一律,
- 有的說,把yml復制到txt再復制回來
- 有的說,設置idea的utf-8環(huán)境
這些根本沒有根治這個問題。
下面是這個簡單的異常信息
java.lang.IllegalStateException: Failed to load property source from 'file:/D:/IDEA/spring-cloud/sp05-eureka/target/classes/application.yml' (classpath:/application.yml)
Caused by: org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1
出現這個的原因,就是解析yml文件時,中文字符集不是utf-8的原因,
但是通過cmd命令,mvn clean compile 后,項目又可以成功運行
找了很久問題,使用eclipse和idea同時測試,最終發(fā)現,是maven在項目編譯時,默認字符集編碼是GBK
一、檢查pom文件
我們首先需要在pom文件中設置,編譯時編碼utf-8即可,如果解決不了進行第二步
<properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.SR6</spring-cloud.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> </properties>
二、修改編碼格式
然后重新啟動項目!?。?!
三、最不應該出現的錯誤
就是你的application.yml文件是通過把其他類型的文件后綴名直接改為yml生成的,這時就需要你把application.yml中的內容全部復制,然后刪除,再新建一個application.yml文件,將復制的內容拷貝進去再運行項目就不會報錯了。
四、總結:
這個問題,在一般成熟的項目里面是不會出現的,他一般出現在新建的項目上面,因為一般新建的項目有些配置不夠完善,這一塊是需要注意的地方。
到此這篇關于SpringBoot啟動java.nio.charset.MalformedInputException: Input length = 1報錯的解決方案的文章就介紹到這了,更多相關java.nio.charset.MalformedInputException內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MyBatis-Plus如何通過注解使用TypeHandler
這篇文章主要介紹了MyBatis-Plus如何通過注解使用TypeHandler,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01springboot接入deepseek深度求索代碼示例(java版)
這篇文章主要介紹了springboot接入deepseek深度求索的相關資料,包括創(chuàng)建APIKey,封裝詢問工具方法,傳入問題,調用方法,但發(fā)現只能回答簡單問題,需要的朋友可以參考下2025-01-01