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

Gerrit使用Bazel构建时Maven2 Jar包SHA1不匹配如何解决

Bazel构建Gerrit 3.2.14时bcprov依赖SHA1校验失败修复方案

问题核心

构建//lib/bouncycastle:bcprov目标时拉取bcprov-jdk15on-1.61.jar依赖失败,硬编码预期SHA1值为00df4b474e71be02c1349c3292d98886f888d1f7,实际下载得到的文件SHA1值为8f13ba4527c222db2995b9cf052d88a4540890f9,哈希校验不通过阻断构建流程。

排查方向

  • 本地Bazel缓存损坏:之前中断构建、异常断电等情况会导致缓存目录下的jar包写入不完整,哈希异常
  • 网络链路篡改:内网代理、网关、公共网络劫持可能修改下载的二进制文件,返回错误内容
  • 镜像源异常:自定义配置的Maven镜像如果同步不完整、缓存错误,会返回损坏的包文件
  • 依赖硬编码哈希过期:上游仓库偶发出现同版本包重新发布的情况,导致源码中预置的校验值和实际文件不匹配

修复步骤(按优先级操作)

  1. 清理损坏缓存重试
    直接删除出错的依赖缓存目录,执行命令:
    rm -rf /home/builder/.cache/bazel/_bazel_builder/9afd9023b67c60c8c3f995a3b1c75370/external/bcprov/
    
    清理完成后重新执行构建命令,多数临时缓存异常问题可直接解决。
  2. 排查网络与镜像源问题
    • 如果配置了自定义Maven镜像,临时切回默认源测试,或更换其他可信镜像源
    • 内网环境下临时切换到无代理的直连网络测试,排除代理篡改文件的可能
    • 手动从可信渠道获取对应版本的bcprov-jdk15on-1.61.jar包,本地执行sha1sum bcprov-jdk15on-1.61.jar计算哈希值,确认官方发布包的真实哈希
  3. 修正依赖校验值(仅确认官方包哈希与硬编码值不一致时使用)
    如果手动获取的官方包哈希和报错中的实际值一致,说明源码中预置的校验值过期,找到Gerrit源码中bouncycastle的依赖声明文件(通常为lib/bouncycastle/BUILD或WORKSPACE中对应的外部依赖配置段),将bcprov-jdk15on-1.61.jar对应的SHA1值修改为实际计算得到的正确值,保存后重新构建即可。
  4. 本地预置依赖跳过下载
    手动准备好哈希匹配的bcprov-jdk15on-1.61.jar文件,直接放到Bazel预期的缓存路径:
    /home/builder/.cache/bazel/_bazel_builder/9afd9023b67c60c8c3f995a3b1c75370/external/bcprov/jar/
    
    放置完成后重新执行构建即可跳过下载步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 20:21:38