Bazel build长时间卡在Fetching repository @local_jdk问题求助
问题解答
1. 操作是否有误?
你按照官方文档安装Bazelisk、执行教程步骤的操作本身没问题,卡住属于环境适配层面的异常,并非操作流程错误。
2. Bazel 6.1.2 是否支持JDK 20?
Bazel 6.1.2支持JDK 20,官方在6.x版本中已完成对JDK 20的适配,但M1架构Mac上的本地JDK检测偶尔会出现兼容性问题。
3. 当前卡住的原因
终端显示Fetching repository @local_jdk,说明Bazel正在自动检测本地已安装的JDK,在M1 Mac + JDK 20的组合下,卡住大概率是以下原因:
- Bazel的本地JDK检测逻辑对ARM架构的OpenJDK 20兼容性不佳,导致循环检测或资源占用过高(这也是你电脑发热的直接原因);
- 系统权限限制,Bazel无法读取JDK安装目录的关键文件,导致检测进程挂起。
4. 是否在尝试下载专属JDK版本?
当前阶段没有在下载远程JDK,@local_jdk是Bazel用于检测本地已安装JDK的仓库标识,只有当本地检测彻底失败时,Bazel才会尝试从远程下载它默认适配的JDK版本。
临时解决办法
可以通过手动指定JDK路径跳过自动检测:
- 找到你的OpenJDK 20安装路径,比如
/Library/Java/JavaVirtualMachines/openjdk-20.jdk/Contents/Home - 执行build命令时添加环境变量:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-20.jdk/Contents/Home bazel build //:ProjectRunner
或者在项目根目录创建.bazelrc文件,添加以下内容永久指定:
build --java_home=/Library/Java/JavaVirtualMachines/openjdk-20.jdk/Contents/Home
内容的提问来源于stack exchange,提问作者xdavidliu
相关产品推荐
相关产品推荐

