springboot 打包 failed with MalformedInputException: Input length=1

 更新时间:2025年07月10日 10:27:24   作者:桔子爱笑  
本文主要介绍了SpringBoot项目在打包时常见的错误,通常是由于资源文件的编码问题导致的,下面就一起来介绍一下该问题的详细步骤,感兴趣的可以了解一下

MalformedInputException: Input length = 1 是 Spring Boot 项目在打包时常见的错误,通常是由于资源文件(如 .properties.yml 或其他文本文件)的编码问题导致的。Maven 在读取这些文件时,如果文件的编码与预期的编码(通常是 UTF-8)不匹配,就会抛出此异常。

以下是解决该问题的详细步骤:

1.检查文件编码

  • 确保 src/main/resources 目录下的所有文件都使用 UTF-8 编码
  • 如果你使用的是 IDE(如 IntelliJ IDEA 或 Eclipse),可以按照以下步骤检查和修改文件编码:
    • IntelliJ IDEA:
      1. 打开 File > Settings > Editor > File Encodings
      2. Global EncodingProject EncodingDefault Encoding for properties files 都设置为 UTF-8
      3. 重新保存文件。

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 在打包时使用 UTF-8 编码处理资源文件。

3.排除非 UTF-8 编码的文件

如果某些文件无法转换为 UTF-8 编码(例如二进制文件),可以在 pom.xml 中排除这些文件:

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <excludes>
            <exclude>**/*.bin</exclude> <!-- 示例:排除二进制文件 -->
        </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>

如果只需要对某些文件启用过滤,可以单独配置:

<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.转换文件编码

如果某些文件不是 UTF-8 编码,可以使用工具将其转换为 UTF-8:

  • 使用文本编辑器(如 Notepad++ 或 VS Code)打开文件,然后选择 Save with Encoding > UTF-8
  • 使用命令行工具 iconv 转换编码:
    iconv -f ISO-8859-1 -t UTF-8 inputfile.properties -o outputfile.properties
    

6.检查特殊字符

如果资源文件中包含特殊字符(如非 ASCII 字符),确保它们被正确转义。例如,在 .properties 文件中,可以使用 Unicode 转义序列:

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.清理并重新构建

完成上述修改后,运行以下命令清理并重新构建项目:

mvn clean install

9.调试模式

如果问题仍然存在,可以使用 Maven 的调试模式查看详细错误信息:

mvn clean install -X

检查日志中是否有具体的文件路径和行号,找到导致问题的文件。

通过以上步骤,你应该能够解决 MalformedInputException: Input length = 1 的问题。如果问题仍未解决,请提供更多错误日志或配置信息,我可以进一步帮助你排查问题!

到此这篇关于springboot 打包 failed with MalformedInputException: Input length=1的文章就介绍到这了,更多相关springboot 打包错误内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何基于SpringMVC实现断点续传(HTTP)

    如何基于SpringMVC实现断点续传(HTTP)

    这篇文章主要介绍了如何基于SpringMVC实现断点续传(HTTP),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Java使用FileInputStream流读取文件示例详解

    Java使用FileInputStream流读取文件示例详解

    这篇文章主要介绍了Java使用FileInputStream流读取文件示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Spring中读取配置文件的五种方式

    Spring中读取配置文件的五种方式

    在使用spring或springboot项目开发中,难免会涉及到读取配置文件的各种配置参数的情况,因为当项目的规模上去之后,在单个配置文件中维护所有的配置信息很难满足实际的需要,所以本文给大家介绍了Spring读取配置文件多种方式,需要的朋友可以参考下
    2024-04-04
  • iReport使用指南及常见功能示例详解

    iReport使用指南及常见功能示例详解

    这篇文章主要介绍了iReport使用指南及常见功能,本文以iReport 3.5.1为例,通过示例演示给大家介绍的非常详细,需要的朋友可以参考下
    2021-10-10
  • Spring容器-BeanFactory和ApplicationContext使用详解

    Spring容器-BeanFactory和ApplicationContext使用详解

    这篇文章主要为大家介绍了Spring容器-BeanFactory和ApplicationContext的使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Java定时清理过期文件的实例代码

    Java定时清理过期文件的实例代码

    这篇文章主要介绍了Java定时清理过期文件的实例代码,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2018-12-12
  • springSecurity过滤web请求的项目实践

    springSecurity过滤web请求的项目实践

    SpringSecurity是一个功能强大的安全框架,提供了全面的 Web 安全功能,它的核心之一是过滤器链,用于拦截和处理 Web 请求,本文就来介绍SpringSecurity配置和使用过滤器来管理Web请求的安全性,感兴趣的可以了解一下
    2025-09-09
  • RabbitMQ 集群部署方法

    RabbitMQ 集群部署方法

    文章主要介绍了RabbitMQ在三台CentOS7服务器上的安装和集群配置,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2026-04-04
  • Java8 使用 stream().sorted()对List集合进行排序的操作

    Java8 使用 stream().sorted()对List集合进行排序的操作

    这篇文章主要介绍了Java8 使用 stream().sorted()对List集合进行排序的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • java中常用的json,jsonarray,map数据结构与对象互转详解

    java中常用的json,jsonarray,map数据结构与对象互转详解

    这篇文章主要为大家详细介绍了java中常用的json,jsonarray,map数据结构与对象互转的相关方法,主要是FastJSON和Jackson两种常用库,有需要的小伙伴可以了解下
    2025-12-12

最新评论