mac m1/m2 必须安装 arm64 架构 jdk,错误安装 x86_64 版本会导致 java 进程崩溃、ide 启动失败、java -version 异常及构建卡死;需用 file $(which java) 验证架构,优先通过 homebrew 或 eclipse temurin 下载 aarch64 版本,并确保 java_home、ide 和终端均指向 arm64 jdk 路径。

Mac M1/M2 必须装 ARM64 架构的 JDK,装错 x86_64 版本会导致 Java 进程崩溃、IDE 启动失败、java -version 显示异常,甚至 mvn 或 gradle 构建卡死。
怎么确认你当前的 JDK 是不是 ARM64?
别信官网下载页写的“Apple Silicon 支持”——得自己验。终端执行:
file $(which java)
如果输出里含 arm64,说明是正确版本;若出现 x86_64 或 i386,立刻卸载。常见错误现象包括:zsh: killed、IntelliJ 提示 “JVM terminated unexpectedly”、Spring Boot 应用启动后立即退出。
- 不要依赖
java -version输出判断架构,它不显示底层 ABI - Homebrew 安装的
openjdk默认是 ARM64(M1/M2 上),但加了--x86_64标志或用了 Rosetta 终端就会错 - Android Studio 自带的 JDK 通常是 x86_64,需手动切换到系统 ARM JDK
从哪下真正能用的 ARM64 JDK?
推荐三个来源,按稳定性排序:
立即学习“Java免费学习笔记(深入)”;
-
Homebrew:最省心,brew install openjdk→ 自动装 ARM64,brew install temurin也同理(Temurin 17+ 已全面支持 ARM) -
Adoptium.net(现为 Eclipse Temurin):下载页面选 “macOS aarch64” 版本,别点 “macOS x64” —— 两者图标几乎一样,极易点错 -
Amazon Corretto或Zulu:必须进下载页手动勾选 “ARM64” 或 “aarch64”,它们的首页推荐位常默认推 x64
Oracle 官方 JDK 虽有 ARM64 版,但仅限订阅用户(免费版只到 JDK 17,且安装包命名不标架构,容易混淆)。
装完怎么让终端和 IDE 都用上 ARM JDK?
关键不是“装”,而是“生效”。M1/M2 上多 JDK 共存很常见,环境变量一错全崩:
- 检查
$JAVA_HOME:运行echo $JAVA_HOME,路径里必须含arm64或aarch64(如/opt/homebrew/opt/openjdk/libexec/openjdk.jdk/Contents/Home) - IntelliJ:Preferences → Build → Gradle → JVM → 手动指定 JDK 路径,别选 “Bundled”
- VS Code 的 Java 扩展:在设置里搜
java.home,填绝对路径,不能用~符号 - Terminal 启动方式影响结果:用 Launchpad 打开的 Terminal 是原生 ARM;右键“使用 Rosetta 打开”的 Terminal 会强制走 x86_64,哪怕 JDK 是 ARM 的也加载失败
为什么有些工具(比如 Maven 插件)还是报错?
不是 JDK 问题,是插件本身没适配 ARM64。典型表现:maven-surefire-plugin 启动 forked JVM 失败、protobuf-maven-plugin 调用本地 protoc 崩溃。
- 先确认插件是否声明支持 aarch64:查其 GitHub Release 页面,看是否有
darwin-aarch64资产 - Protobuf、GraalVM native-image 等工具链需单独下载 ARM64 版本,不能复用 x86_64 的二进制
- 某些老版本 Spring Boot(2.5.x 及之前)内嵌的 Tomcat 在 ARM 上有线程调度 bug,升级到 2.6+ 可缓解
ARM64 不是“换个 JDK 就万事大吉”,整个工具链得对齐。最容易被忽略的是:你以为换好了 JDK,其实终端、IDE、构建工具、本地 CLI 工具各用各的版本。










