在 mac 上安装 jdk 并配置 java_home 最稳妥的方式是使用 homebrew 安装特定版本的 openjdk,并将环境变量写入 shell 配置文件。推荐使用 brew install openjdk@17 命令获取稳定版本,随后在 .zshrc 中设置 java_home 路径并加入 path,这样重启终端后 java -version 即可验证生效。

Homebrew 如何管理 JDK 版本
Homebrew 通过 keg-only 策略隔离 JDK,避免覆盖系统自带环境。安装后需手动链接或显式指定路径,确保构建工具如 Maven 能正确识别。

brew install openjdk@17 export JAVA_HOME=$(/usr/libexec/java_home -v 17) echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 17)' >> ~/.zshrc source ~/.zshrc java -version
预期结果:openjdk version "17.0.x",且 echo $JAVA_HOME 输出对应路径。
立即学习“Java免费学习笔记(深入)”;
多版本切换时 /usr/libexec/java_home 的行为
/usr/libexec/java_home 是 macOS 提供的辅助脚本,用于动态解析当前首选 JDK 路径。当系统中存在多个版本时,它依据优先级返回最高版本路径,除非指定了 -v 参数。

brew install openjdk@11 brew install openjdk@17 /usr/libexec/java_home -v 11 echo $JAVA_HOME
预期结果:即使安装了 17,指定 -v 11 后 JAVA_HOME 指向 11 的路径,java -version 显示 11 版本。
未设置 JAVA_HOME 时 mvn 的默认行为
若未显式设置 JAVA_HOME,Maven 会依赖系统 PATH 中的第一个 java 可执行文件。这可能导致版本不一致或构建失败,尤其在使用非 Homebrew 安装的 JDK 时。
unset JAVA_HOME mvn -version
预期结果:Maven 使用 PATH 中的 JDK,若该版本与项目要求不符,可能抛出 IncompatibleClassChangeError 或编译错误。


















