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 打包错误内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Springboot并发调优之大事务和长连接

    Springboot并发调优之大事务和长连接

    这篇文章主要介绍了Springboot并发调优之大事务和长连接,重点分享长事务以及长连接导致的并发排查和优化思路和示例,具有一定的参考价值,感兴趣的可以了解一下
    2022-05-05
  • Java后端限制频繁请求和重复提交的实现

    Java后端限制频繁请求和重复提交的实现

    很多用户会请求过于频繁或者是多次重复提交数据,本文主要介绍了Java后端限制频繁请求和重复提交的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 详解Springboot2.3集成Spring security 框架(原生集成)

    详解Springboot2.3集成Spring security 框架(原生集成)

    这篇文章主要介绍了详解Springboot2.3集成Spring security 框架(原生集成),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • java web过滤器处理乱码

    java web过滤器处理乱码

    本文主要介绍了java web过滤器处理乱码的方法解析。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-04-04
  • Java编程一个随机数产生模块代码分享

    Java编程一个随机数产生模块代码分享

    这篇文章主要介绍了Java编程一个随机数产生模块代码分享,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • java 使用BigDecimal进行货币金额计算的操作

    java 使用BigDecimal进行货币金额计算的操作

    这篇文章主要介绍了java 使用BigDecimal进行货币金额计算的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 手把手教你SpringBoot快速集成Swagger的配置过程

    手把手教你SpringBoot快速集成Swagger的配置过程

    这篇文章主要介绍了手把手教你SpringBoot快速集成Swagger的配置过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 利用Java实现简单的词法分析器实例代码

    利用Java实现简单的词法分析器实例代码

    众所周知编译原理中的词法分析算是很重要的一个部分,原理比较简单,不过网上大部分都是用C语言或者C++来编写,因为最近在学习Java,故用Java语言实现了简单的词法分析器。感兴趣的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • Java中日期与时间的处理及工具类封装详解

    Java中日期与时间的处理及工具类封装详解

    在项目开发中免不了有对日期时间的处理,但Java中关于日期时间的类太多了,本文就来介绍一下各种类的使用及我们项目中应该怎么选择吧
    2023-07-07
  • 详解hbase与hive数据同步

    详解hbase与hive数据同步

    这篇文章主要介绍了详解hbase与hive数据同步的相关资料,需要的朋友可以参考下
    2017-09-09

最新评论