Jacoco 0.8.1运行报IllegalClassFormatException错误的解决方案咨询
排查解决步骤
核心根因
你当前使用的Jacoco 0.8.1版本不兼容JDK 17的字节码格式:该版本发布于2018年,最高仅支持JDK 11的早期预览版本,无法识别JDK 17生成的类文件结构,直接触发了类插桩阶段的java.lang.instrument.IllegalClassFormatException报错。你此前正常运行的环境大概率使用的是JDK 1.8,正好匹配Jacoco 0.8.1的适配范围。
修复方案(二选一即可)
方案1:保留现有Jacoco版本,切换项目JDK到1.8
- 修改
JAVA_HOME环境变量指向本地JDK 1.8的安装路径 - 执行以下命令验证版本匹配:
确认两个命令的输出均为1.8.x系列即可java -version javac -version - 清理项目构建缓存后重新执行测试
- 修改
方案2:保留JDK 17,升级Jacoco到兼容版本
要支持JDK 17需要Jacoco 0.8.7及以上版本,直接修改项目构建配置文件(pom.xml对应jacoco-maven-plugin版本、build.gradle对应jacoco插件版本)到最新稳定版即可,升级后清理缓存重新运行测试。
异常场景补充排查
如果调整版本后仍有报错,可检查以下两点:
- 确认项目所有模块的编译JDK版本统一,避免部分模块用JDK17编译、部分用JDK1.8,混合字节码版本会触发插桩失败
- 确认Jacoco插件版本和项目引入的jacoco-core依赖版本完全一致,版本不匹配也会引发类格式异常
内容的提问来源于stack exchange,提问作者LMaker
相关产品推荐
相关产品推荐

