必须使用aarch64/arm64架构jdk安装包,避免x86_64版本;推荐temurin、zulu或corretto发行版;java_home须指向/contents/home子目录,并通过echo $java_home和which java验证。

认准 aarch64 架构的 .pkg 或 .dmg 安装包
Apple M 系列芯片(M1/M2/M3)是 ARM64(即 aarch64)架构,必须使用原生适配该架构的 JDK 安装包。用错 x86_64(Intel)版本会导致:java -version 报错、javac 编译失败、IDE(如 IntelliJ 或 Android Studio)识别为“invalid JDK”,甚至部分 JNI 库直接崩溃。
验证方式很简单:下载页面或文件名中必须明确出现 aarch64、arm64 或 macos-aarch64 字样。例如:
zulu8.72.0.5-ca-jdk8.0.422-macosx_aarch64.dmgtemurin-17.0.8+7-jdk-aarch64-macos.jdkcorretto-21.0.4.7.1-macos-aarch64-jdk.pkg
避免任何含 x86_64、intel、macos-x64 的安装包——哪怕它标着“JDK 21 LTS”,在 M 芯片上也属于错误二进制。
推荐发行版:Temurin(Eclipse)、Zulu(Azul)、Corretto(AWS)
这三个是当前最稳定、更新及时、且对 Apple Silicon 支持最透明的 OpenJDK 发行版。它们都提供长期支持(LTS)版本,并在官网清晰标注 aarch64 下载入口。
选哪个?看你的实际需求:
- 需要 JDK 8(比如维护老 Hadoop/Spark 项目)→ 优先选
Zulu for JDK 8(Azul 长期维护 Java 8 的 aarch64 构建,更新比 Temurin 更勤) - 新项目或主流开发(Spring Boot 3+、Gradle 8+)→ 选
Temurin JDK 21(Eclipse 基金会维护,社区认可度高,/usr/libexec/java_home -V输出干净) - 已在 AWS 生态或需要企业级 SLA → 选
Amazon Corretto(免费商用,提供安全补丁和性能优化)
Oracle JDK 官网虽也提供 aarch64 版本,但 JDK 8 已停止公开更新,JDK 21 则需登录+接受商业条款才可下载,不推荐个人或中小团队首选。
Homebrew 安装要小心架构陷阱
用 brew install openjdk 看似方便,但它默认安装的是 ARM64 版本——这本身没错。但坑在于:
- 如果你的终端开了 Rosetta(即运行在 x86_64 模式下),
brew install会静默失败或装错架构; -
brew install openjdk@17这类带版本号的公式,可能仍指向旧版构建,java -version显示 “x86_64” 就说明踩中了; - Homebrew 安装路径是
/opt/homebrew/opt/openjdk/libexec/openjdk.jdk,和系统级/Library/Java/JavaVirtualMachines/不同,部分 IDE(尤其是老版本 Android Studio)可能不自动识别。
稳妥做法:先确认终端是原生 ARM 运行(终端图标右键 → “显示简介” → 未勾选“使用 Rosetta 打开”),再执行 arch 命令,输出应为 arm64;之后再用 brew install temurin17-jdk(Temurin 提供了明确命名的公式)。
JAVA_HOME 配置必须指向 Contents/Home 子目录
无论你装的是 Zulu、Temurin 还是 Corretto,所有 macOS 上的 JDK pkg 安装后,真实 JDK 根目录都在:/Library/Java/JavaVirtualMachines/<xxx>.jdk/Contents/Home</xxx>。漏掉 /Contents/Home 是最常导致 java -version 正常但 Maven/Gradle 报 JAVA_HOME not found 的原因。
正确写法(以 Temurin 21 为例):
export JAVA_HOME=$(/usr/libexec/java_home -v 21)
或者手动指定(注意路径中的空格和版本号):
export JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home
千万别写成:/Library/Java/JavaVirtualMachines/temurin-21.jdk(缺 /Contents/Home)或 /Library/Java/Home(这是过时的符号链接,早已失效)。
真正容易被忽略的点是:M 芯片 Mac 上,同一个 JDK 安装包在不同 shell(zsh/bash)或不同终端实例中,$JAVA_HOME 可能根本没生效——因为配置文件(~/.zshrc)改了,但你没关重开终端,也没运行 source ~/.zshrc。每次配完,务必执行 echo $JAVA_HOME 和 which java 双重验证。











