You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot Gradle项目jacocoTestReport任务执行失败求助

解决JacocoTestReport任务因字符编码报错的问题

问题分析

你遇到的java.lang.IllegalArgumentException: malformed input错误,大概率是Jacoco在处理资源文件时,默认字符集(通常为UTF-8)无法解析chcp1251编码的归档文件导致的。Jacoco生成报告时会扫描项目内的资源文件,若文件编码与默认字符集不匹配,就会触发这类解析错误。

解决方案

1. 为Jacoco任务指定字符集

Jacoco没有直接的字符集配置项,但可以通过设置JVM系统属性强制指定字符集,让Jacoco处理文件时使用chcp1251对应的Java编码名称windows-1251。修改build.gradle中的jacocoTestReport任务:

jacocoTestReport {
    dependsOn test
    // 指定字符集为windows-1251(对应chcp1251)
    jvmArgs '-Dfile.encoding=windows-1251'

    reports {
        html.enabled false
        xml.enabled true
    }
}

2. 排除特定编码的资源文件

如果不需要统计这些归档文件的覆盖率,可以将其从Jacoco的扫描范围中排除,避免解析错误。调整jacocoTestReport任务添加排除规则:

jacocoTestReport {
    dependsOn test

    // 排除chcp1251编码的归档文件(根据实际文件名/路径调整)
    sourceSets {
        main {
            resources {
                exclude '**/*.zip' // 替换为你的归档文件路径或后缀
            }
        }
        test {
            resources {
                exclude '**/*.zip'
            }
        }
    }

    reports {
        html.enabled false
        xml.enabled true
    }
}

3. 转换归档文件编码

若条件允许,直接将chcp1251编码的归档文件转换为UTF-8编码,从根源上解决字符集不兼容问题。

验证

修改配置后,重新执行:

gradle clean build

若错误消失,说明配置生效。

内容的提问来源于stack exchange,提问作者Galua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 01:24:26