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

如何修复Mac OS上Bazel报错「仍尝试连接本地Bazel服务器」的问题

Bazel MacOS端口被防火墙拦截解决方案

根因定位

本次故障是MacOS安全补丁升级后,内置防火墙拦截未签名的Bazel内嵌JDK进程本地端口通信的已知兼容问题,Bazel 4.x版本普遍存在该故障。

可行解决方案

方案1:添加防火墙放行规则(推荐,永久解决)

  • 从bazel --batch info的java-home输出中获取内嵌JDK的java二进制路径,格式如下:
/var/tmp/_bazel_<你的用户名>/install/<你的install哈希值>/embedded_tools/jdk/bin/java
  • 打开MacOS系统设置→安全性与隐私→防火墙→防火墙选项
  • 点击左下角+号,找到上述路径的java二进制文件添加,设置为允许传入连接
  • 执行bazel shutdown杀掉现有异常Bazel进程,重新执行bazel info验证即可恢复正常

方案2:临时绕过(无防火墙修改权限时使用)

Bazel的--batch参数会禁用常驻服务模式,所有命令单进程执行,不需要端口通信,缺点是每次命令执行都会重新初始化环境,速度比常驻模式慢30%~50%。
可以通过设置别名简化操作:

  • 打开终端执行:
echo "alias bazel='bazel --batch'" >> ~/.zshrc
# 如果你用bash则替换为~/.bash_profile
  • 执行source ~/.zshrc生效后,直接调用bazel命令即可自动带batch参数

方案3:升级Bazel版本(兼容性最优)

该问题在Bazel 5.3.0及以上版本已经修复,高版本适配了MacOS新的安全规则,不需要额外修改防火墙配置。可以通过brew或者官方安装包升级到最新稳定版即可解决。

验证步骤

操作完成后执行以下命令验证:

  • 杀掉现有Bazel进程:bazel shutdown
  • 执行bazel info,如果10秒内返回正常输出则修复成功
  • 可选验证端口连通性:
# 获取当前Bazel服务端口
port=$(cat $(bazel info output_base)/server/command_port | cut -d ':' -f2)
nc -vz ::1 $port

返回succeeded!则端口通信正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:06:02