必须正确设置java_home和path:先用/usr/libexec/java_home -v 17获取路径,再将其写入~/.zshrc并source生效,最后验证echo $java_home、which java、java -version与javac -version三者一致。

在 macOS Sonoma 系统上让终端能识别 java 和 javac 命令,必须正确设置 JAVA_HOME 和 PATH,否则 Maven、Gradle、IDEA 或 Android Studio 都会报“Java not found”错误。
确认已安装 OpenJDK 17
打开终端,执行:
java -version
如果提示 command not found,说明 JDK 未安装;若返回版本信息但厂商不是 “Temurin” 或 “Eclipse Adoptium” 或 “Homebrew”,则可能装的是 Oracle JRE(不可用于开发)。
再执行:
javac -version
若报错或输出版本号与 java -version 不一致,说明环境不完整。
用 Homebrew 安装 OpenJDK 17(推荐)
方法一:一键安装并自动管理路径
① 若未安装 Homebrew,运行:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
② 执行 brew install openjdk@17
这会把 JDK 安装到 /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home(Apple Silicon)或 /usr/local/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home(Intel)
③ 安装完成后,Homebrew 会提示你添加 PATH——但【不要直接照抄它给的 echo 命令】,因为其 PATH 写法不兼容 JAVA_HOME 动态切换,容易导致多 JDK 版本冲突。
配置 JAVA_HOME 和 PATH
第一步:获取 OpenJDK 17 的真实路径
在终端中运行:
/usr/libexec/java_home -v 17
正常应输出类似:
/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home
若提示 No Java runtime present,说明未正确安装或版本号不匹配,请回退检查上一步。
第二步:编辑 shell 配置文件
macOS Sonoma 默认使用 zsh,运行:
nano ~/.zshrc
将光标移至文件末尾,添加以下两行:
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
export PATH=$JAVA_HOME/bin:$PATH
【注意:必须用 $() 包裹命令,不能手敲路径】——硬编码路径在升级或重装后立即失效,且无法适配 Apple Silicon/Intel 双架构。
第三步:保存并生效配置
按 Control + O → 回车确认保存 → Control + X 退出 nano
立即执行:
source ~/.zshrc
这一步不执行,新配置不会生效,后续所有验证都会失败。
验证三项关键输出是否一致
依次运行以下三条命令:
echo $JAVA_HOME
which java
java -version && javac -version
第一行应显示 /opt/homebrew/opt/openjdk@17/... 这类路径;第二行必须返回 /usr/bin/java(这是 macOS 的符号链接机制,实际由 JAVA_HOME 控制);第三行两个 version 输出的主版本号(如 17.0.2)和厂商名(如 "Eclipse Temurin")必须完全相同。
任一不匹配,说明 PATH 顺序错误、JAVA_HOME 指向了旧版本,或 source 未执行。











