Maven 3.9.0构建Java应用报MalformedInputException错误求助
错误成因分析
Maven 3.9.0对资源编码的校验严格化
Maven 3.9.0版本调整了maven-resources-plugin的行为逻辑,配合3.3.0版本插件使用时,资源过滤环节对编码的校验变得更严格。在3.6.x-3.8.x版本中,插件会宽松处理资源文件中不符合指定UTF-8编码的字节(比如单个无效高字节、非UTF-8字符),要么自动替换要么忽略;但3.9.0环境下,插件会严格执行UTF-8编码规则,一旦检测到无效的字节序列,直接抛出MalformedInputException。资源文件实际编码与配置不匹配
尽管POM已指定UTF-8编码,但你的HTML/XML文件可能实际采用了其他编码(如GBK、ISO-8859-1),或是文件中混入了单个非UTF-8的无效单字节(比如编辑过程中遗留的异常字节)。旧版Maven会兼容这种不匹配,但3.9.0的严格校验直接触发了异常。插件编码配置的继承逻辑变化
Maven 3.9.0修改了插件配置的读取优先级,可能导致maven-resources-plugin没有正确继承POM中设置的UTF-8编码,转而使用系统默认编码(比如Windows环境下的GBK)。当用系统编码解码实际为UTF-8的文件时,就会出现「Input length = 1」的编码错误。
内容的提问来源于stack exchange,提问作者Dray56
相关产品推荐
相关产品推荐

