maven-resources-plugin:3.2.0执行resources报MalformedInputException如何解决
问题现象
在项目工作空间执行mvn -X -e clean package命令构建项目时,抛出如下构建错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on project eWell-web: Input length = 1 -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on project eWell-web: Input length = 1
问题根因
报错指向default-resources资源构建阶段,对应项目内src/main/resources目录的资源处理流程。经排查,报错由该目录下文件携带的非法异常字符触发:异常字符十六进制编码为0xEF、0xBF、0xBD,是UTF-8编码规范里的替换字符(对应Unicode U+FFFD),普通文本编辑器中会显示为�,本次排查到的异常内容片段为location restrictions in � 3215.。maven-resources-plugin:3.2.0在按编码解析资源文件时,无法正确处理该非法字符,最终抛出Input length = 1的错误终止构建。
修复步骤
- 直接清理异常字符
打开存在乱码的资源文件,定位到显示为�的异常位置,删除该非法乱码字符,替换为原本对应的正确文本内容,保存后重新执行构建命令即可。 - 显式指定插件编码规避同类问题
在项目pom.xml中为maven-resources-plugin明确指定UTF-8编码,避免插件默认跟随系统编码解析文件导致的乱码解析失败,配置参考如下:<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.2.0</version> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> - 批量排查全目录乱码
如果src/main/resources下文件数量较多,用编码检测工具扫描整个目录,批量找出所有携带0xEF 0xBF 0xBD非法字符的文件,统一清理完成后再执行构建。
内容的提问来源于stack exchange,提问作者user1955401
相关产品推荐
相关产品推荐

