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

Windows10下构建Angular贡献代码时遇Bazel标签无效错误

解决Windows下Bazel构建Angular项目时local_jdk文件名含?的报错问题

问题原因

Windows系统中,JDK的cacerts文件可能因自动更新或系统文件名规则限制,生成了带?的文件名(原时间戳中的冒号:在Windows文件名里不允许,被系统替换为?)。而Bazel的标签命名规则禁止目标名包含?,导致解析@local_jdk//:jre-lib时触发错误。

解决步骤

方法1:修改Bazel缓存中的JDK文件名

  1. 定位Bazel缓存里的local_jdk路径,即错误日志中的C:/users/douglascanevarollo/_bazel_002625631/6mbkp73u/external/local_jdk(你的路径里的随机串和哈希串会不同)。
  2. 进入jre/lib/security目录,找到带?的cacerts文件(比如cacerts.2023-04-27T10?04?22)。
  3. 将该文件重命名为不含?的格式,例如cacerts.2023-04-27T100422,或者直接复制一份命名为cacerts覆盖原文件。
  4. 重新执行yarn bazel build packages/core。

方法2:指定Bazel使用的JDK(更稳定)

避免依赖自动检测的local_jdk,手动指定一个无文件名问题的JDK:

  • 临时生效:执行构建命令时添加参数指定JDK:
    yarn bazel build packages/core --javabase=@bazel_tools//tools/jdk:remote_jdk11
    
  • 永久生效:设置环境变量BAZEL_JAVABASE指向你的本地JDK路径(需替换为实际路径):
    setx BAZEL_JAVABASE "C:\Program Files\Java\jdk11.0.18"
    
    设置后重启终端,再执行构建命令。

方法3:调整Windows时间格式(可选)

  1. 打开Windows「设置」→「时间和语言」→「区域」→「更改数据格式」。
  2. 将短时间格式改为不含冒号的格式(比如HHmm),避免系统生成带冒号的文件名。
  3. 清理Bazel缓存后重新执行构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:02:02