必须安装ARM64版JDK 21,否则会导致java -version报错、IDE启动失败、mvn卡死或zsh: killed;通过uname -m确认真实架构为arm64,再从Homebrew、Eclipse Temurin或Azul Zulu下载对应aarch64版本,并用file $(which java)和/usr/libexec/java_home -v21验证路径与架构一致。

必须装 ARM64(aarch64)版本的 JDK 21,装错 x86_64 会导致 java -version 报错、IDE 启动失败、mvn 构建卡死,甚至直接触发 zsh: killed。
怎么确认你的 Mac 真实架构?
别看系统报告里写的“Apple M2”,终端才是唯一可信来源。打开 Terminal,运行:
uname -m
输出 arm64 才是真·M2;如果看到 x86_64,说明你正用 Rosetta 2 运行终端(此时命令本身仍能正确识别硬件,但后续安装环境容易混乱)。
常见误判点:
- 官网下载页标着“MacOS”不等于支持 ARM —— 必须点开下载列表,认准
macos-aarch64_bin.dmg或macos-arm64_bin.tar.gz -
java -version输出里带64-Bit Server VM≠ ARM64,它完全不体现底层 ABI
哪里下真正可用的 ARM64 JDK 21?
三个靠谱渠道,按推荐顺序排列:
-
Homebrew(最省心):运行
brew install openjdk,M2 上默认装的就是 aarch64 版;若已装过 x86_64,先arch -x86_64 brew uninstall openjdk再重装 -
Eclipse Temurin(最稳):去
adoptium.net→ Downloads → 选macOS aarch64→ JDK 21 LTS,下载TemurinJDK21.jdk安装包 -
Azul Zulu(企业友好):进
zulu.org→ Download → 勾选ARM64+macOS+JDK 21,避免点到首页推荐的 x64 版本
Oracle 官方 JDK 21 虽有 ARM64,但免费版只到 JDK 17;JDK 21 需订阅,且安装包命名不带 aarch64 字样,极易下错。
装完怎么验证和生效?
光装完不等于能用。两步缺一不可:
① 验证二进制架构:
file $(which java)
输出必须含 arm64;若出现 x86_64 或 i386,立刻卸载重来。
② 确保 $JAVA_HOME 指向 ARM64 路径:
- 查路径:
/usr/libexec/java_home -v21(输出类似/opt/homebrew/opt/openjdk/libexec/openjdk.jdk/Contents/Home) - 写入
~/.zshrc:export JAVA_HOME=$(/usr/libexec/java_home -v21),不能写死路径,也不能用~符号 - IDE 要手动指定:IntelliJ → Preferences → Build → Gradle → JVM → 选中该路径;VS Code 的
java.home设置也一样
为什么多 JDK 共存时总出问题?
M2 上常见一个现象:终端里 java -version 正常,但 IntelliJ 启动报 JVM terminated unexpectedly。根本原因不是没装好,而是 IDE 默认用了自带的 x86_64 JDK(比如 Android Studio 自带的那个),或者 $JAVA_HOME 在 IDE 启动时没被加载(GUI 应用不读 shell 配置)。
关键细节:
-
/usr/libexec/java_home -V列出所有已注册 JDK,注意看每条路径里是否含arm64或aarch64 - IDE 启动前,用
launchctl setenv JAVA_HOME ...注入环境变量,或直接在 IDE 配置里填绝对路径 - 不要依赖
which java的结果判断全局生效情况——它只反映当前 shell 的 PATH 查找顺序
最易忽略的一点:Homebrew 安装的 openjdk 路径在 /opt/homebrew,而传统 dmg 安装在 /Library/Java/JavaVirtualMachines,两者共存时,/usr/libexec/java_home 默认优先返回后者——哪怕后者是 x86_64 版。必须用 -v21 显式限定版本,再检查路径内容。


















