springboot 打包 failed with MalformedInputException: Input length=1
MalformedInputException: Input length = 1 是 Spring Boot 項(xiàng)目在打包時(shí)常見的錯(cuò)誤,通常是由于資源文件(如 .properties、.yml 或其他文本文件)的編碼問題導(dǎo)致的。Maven 在讀取這些文件時(shí),如果文件的編碼與預(yù)期的編碼(通常是 UTF-8)不匹配,就會拋出此異常。
以下是解決該問題的詳細(xì)步驟:
1.檢查文件編碼
- 確保
src/main/resources目錄下的所有文件都使用 UTF-8 編碼。 - 如果你使用的是 IDE(如 IntelliJ IDEA 或 Eclipse),可以按照以下步驟檢查和修改文件編碼:
- IntelliJ IDEA:
- 打開
File > Settings > Editor > File Encodings。 - 將
Global Encoding、Project Encoding和Default Encoding for properties files都設(shè)置為UTF-8。 - 重新保存文件。
- 打開
- IntelliJ IDEA:
2.在pom.xml中配置編碼(我在這一步就解決了問題)
在 pom.xml 中明確指定資源文件的編碼為 UTF-8。修改 <build> 部分如下:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering> <!-- 如果需要過濾 -->
<encoding>UTF-8</encoding>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.1</version> <!-- 使用最新版本 -->
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
這樣可以確保 Maven 在打包時(shí)使用 UTF-8 編碼處理資源文件。
3.排除非 UTF-8 編碼的文件
如果某些文件無法轉(zhuǎn)換為 UTF-8 編碼(例如二進(jìn)制文件),可以在 pom.xml 中排除這些文件:
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.bin</exclude> <!-- 示例:排除二進(jìn)制文件 -->
</excludes>
<filtering>true</filtering>
<encoding>UTF-8</encoding>
</resource>
</resources>
4.禁用過濾
如果問題是由于資源過濾(例如 ${variable} 占位符)引起的,可以嘗試禁用過濾:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering> <!-- 禁用過濾 -->
<encoding>UTF-8</encoding>
</resource>
</resources>
如果只需要對某些文件啟用過濾,可以單獨(dú)配置:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.properties</include> <!-- 僅對 properties 文件啟用過濾 -->
</includes>
<encoding>UTF-8</encoding>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering> <!-- 對其他文件禁用過濾 -->
<excludes>
<exclude>**/*.properties</exclude>
</excludes>
<encoding>UTF-8</encoding>
</resource>
</resources>
5.轉(zhuǎn)換文件編碼
如果某些文件不是 UTF-8 編碼,可以使用工具將其轉(zhuǎn)換為 UTF-8:
- 使用文本編輯器(如 Notepad++ 或 VS Code)打開文件,然后選擇
Save with Encoding > UTF-8。 - 使用命令行工具
iconv轉(zhuǎn)換編碼:iconv -f ISO-8859-1 -t UTF-8 inputfile.properties -o outputfile.properties
6.檢查特殊字符
如果資源文件中包含特殊字符(如非 ASCII 字符),確保它們被正確轉(zhuǎn)義。例如,在 .properties 文件中,可以使用 Unicode 轉(zhuǎn)義序列:
greeting=\u4F60\u597D
7.更新 Maven 和插件版本
確保你使用的是最新版本的 Maven 和 maven-resources-plugin。在 pom.xml 中更新插件版本:
<properties>
<maven-resources-plugin.version>3.3.1</maven-resources-plugin.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${maven-resources-plugin.version}</version>
</plugin>
</plugins>
</build>
8.清理并重新構(gòu)建
完成上述修改后,運(yùn)行以下命令清理并重新構(gòu)建項(xiàng)目:
mvn clean install
9.調(diào)試模式
如果問題仍然存在,可以使用 Maven 的調(diào)試模式查看詳細(xì)錯(cuò)誤信息:
mvn clean install -X
檢查日志中是否有具體的文件路徑和行號,找到導(dǎo)致問題的文件。
通過以上步驟,你應(yīng)該能夠解決 MalformedInputException: Input length = 1 的問題。如果問題仍未解決,請?zhí)峁└噱e(cuò)誤日志或配置信息,我可以進(jìn)一步幫助你排查問題!
到此這篇關(guān)于springboot 打包 failed with MalformedInputException: Input length=1的文章就介紹到這了,更多相關(guān)springboot 打包錯(cuò)誤內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot+Maven 多模塊項(xiàng)目的構(gòu)建、運(yùn)行、打包實(shí)戰(zhàn)
- springboot打包部署到linux服務(wù)器的方法
- Springboot打包部署修改配置文件的方法
- IDEA 將 SpringBoot 項(xiàng)目打包成jar的方法
- 一文解決springboot打包成jar文件無法正常運(yùn)行的問題
- SpringBoot項(xiàng)目沒有把依賴的jar包一起打包的問題解決
- Springboot項(xiàng)目與vue項(xiàng)目整合打包的實(shí)現(xiàn)方式
- SpringBoot項(xiàng)目打包成war包并部署在tomcat上運(yùn)行的操作步驟
- 手把手教你用SpringBoot將文件打包成zip存放或?qū)С?/a>
相關(guān)文章
如何基于SpringMVC實(shí)現(xiàn)斷點(diǎn)續(xù)傳(HTTP)
這篇文章主要介紹了如何基于SpringMVC實(shí)現(xiàn)斷點(diǎn)續(xù)傳(HTTP),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
Java使用FileInputStream流讀取文件示例詳解
這篇文章主要介紹了Java使用FileInputStream流讀取文件示例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Spring容器-BeanFactory和ApplicationContext使用詳解
這篇文章主要為大家介紹了Spring容器-BeanFactory和ApplicationContext的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
springSecurity過濾web請求的項(xiàng)目實(shí)踐
SpringSecurity是一個(gè)功能強(qiáng)大的安全框架,提供了全面的 Web 安全功能,它的核心之一是過濾器鏈,用于攔截和處理 Web 請求,本文就來介紹SpringSecurity配置和使用過濾器來管理Web請求的安全性,感興趣的可以了解一下2025-09-09
Java8 使用 stream().sorted()對List集合進(jìn)行排序的操作
這篇文章主要介紹了Java8 使用 stream().sorted()對List集合進(jìn)行排序的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
java中常用的json,jsonarray,map數(shù)據(jù)結(jié)構(gòu)與對象互轉(zhuǎn)詳解
這篇文章主要為大家詳細(xì)介紹了java中常用的json,jsonarray,map數(shù)據(jù)結(jié)構(gòu)與對象互轉(zhuǎn)的相關(guān)方法,主要是FastJSON和Jackson兩種常用庫,有需要的小伙伴可以了解下2025-12-12

