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

ArchLinux环境下Bazel构建java-tutorial项目内部崩溃如何解决

问题根因

Bazel 4.2.0版本仅兼容Java 11及更低版本,当前运行环境默认JDK为Java 16,Java 9及以上版本引入的模块系统限制了对JDK内部API的反射访问权限,Bazel 4.2.0内部依赖的Unsafe调用直接访问java.lang.String内部构造器的逻辑被Java 16的权限校验拦截,因此触发内部崩溃。

解决方案

方案1:降级系统默认JDK到Java 11(最稳定,适配Bazel 4.x全版本)

Arch Linux可直接通过包管理器安装Java 11:

sudo pacman -S jdk11-openjdk

安装完成后切换系统默认JDK:

sudo archlinux-java set java-11-openjdk

验证切换结果:

java -version
echo $JAVA_HOME

确认JDK版本为11后,先清理之前的Bazel残留缓存再重新构建:

bazel clean --expunge
bazel build //:ProjectRunner

方案2:临时添加JVM启动参数绕过模块限制(无需更换JDK,仅针对当前运行生效)

在Bazel启动命令前添加JVM参数,手动开放java.lang模块的访问权限:

bazel --host_jvm_args="--add-opens=java.base/java.lang=ALL-UNNAMED" build //:ProjectRunner

如果需要长期生效,可将参数写入Bazel配置文件~/.bazelrc:

startup --host_jvm_args="--add-opens=java.base/java.lang=ALL-UNNAMED"

方案3:升级Bazel到5.0及以上版本(官方已修复Java高版本兼容问题)

Arch Linux可直接升级Bazel包:

sudo pacman -Syu bazel

升级完成后清理缓存重新构建即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:18:00