必须先执行uname -m确认arm64架构再安装jdk21,否则90%装错;m1/m2需arm64版,x86_64版经rosetta转译性能下降30%,ide启动慢、编译卡顿、调试延迟。

确认 M1/M2 芯片架构再动手,uname -m 必输
不查就装,90% 会装错版本。M1/M2 是 arm64,不是 x86_64。终端里只输一行:uname -m,输出必须是 arm64 才能往下走。别信“Rosetta 能跑 x64 就没事”——性能掉 30%,IDE 启动慢、编译卡顿、调试响应延迟全是后遗症。
- 如果输出
x86_64,说明你正在 Rosetta 模式下运行终端(比如从 Intel 版 App 启动),这不是真实架构,得重启终端或重开一个原生 zsh 环境再试 -
sw_vers只看 macOS 版本,不能代替uname -m;系统报告里的“芯片”描述有时含糊,终端命令才是唯一可信依据
下载 JDK 21 ARM64 版,认准 macos-aarch64 或 Apple Silicon 标识
Oracle 官网、Azul Zulu、Homebrew 提供的 OpenJDK 21 都有 ARM64 构建,但命名规则不同,容易点错:
- Oracle 下载页:选 “
macOS ARM64” 选项卡下的.dmg文件,文件名含aarch64(如jdk-21_macos-aarch64_bin.dmg),千万别选 “macOS” 下默认的 x64 版 - Azul Zulu 下载页:架构选 “
ARM 64-bit”,系统选 “macOS”,版本选 “Java 21” - Homebrew 方案(推荐):
brew install openjdk@21自动匹配 ARM64,装完路径在/opt/homebrew/opt/openjdk@21,比手动下载更省心
环境变量配置失效?检查 shell 类型和配置文件名
M1/M2 默认用 zsh,但很多人沿用旧习惯改 .bash_profile,结果 java -version 显示老版本或报错 “command not found”。
- 先确认当前 shell:
echo $SHELL,输出/bin/zsh就必须改~/.zshrc,不是.bash_profile - Homebrew 安装的 OpenJDK@21,建议这样写:
export JAVA_HOME=$(/opt/homebrew/opt/openjdk@21/bin/java -XshowSettings:properties -version 2>&1 > /dev/null | grep "java.home" | cut -d"=" -f2 | tr -d " "),比硬编码路径更可靠 - 手动安装的 Oracle/Azul JDK,路径通常是
/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home,注意末尾的/Home不可省略 - 改完配置文件,必须执行
source ~/.zshrc(或对应文件),新开终端不会自动 reload
java -version 显示正确但 IDEA 仍用错 JDK?检查 IDE 内部设置
IntelliJ IDEA 的项目 SDK 和平台 SDK 是两套独立配置,系统级 JAVA_HOME 只影响终端启动的 IDEA,不影响已打开的实例或新建项目默认值。
- 打开 IDEA →
Preferences→Project: xxx→Project SDK,点击右侧小齿轮 →Add JDK...→ 选择/Library/Java/JavaVirtualMachines/...或/opt/homebrew/...下的真实路径 - 全局平台 SDK(影响新建项目):在
Preferences→Build, Execution, Deployment→Build Tools→Maven→Importing里,确保JDK for importer指向 ARM64 JDK - 启动 IDEA 时若提示 “JVM is not suitable”,说明它自己 bundled 的 JBR(JetBrains Runtime)和你系统 JDK 混了,可在
Help→Find Action→ 输入 “Choose Boot Java Runtime” 切换为系统 JDK











