jenv是mac上管理多jdk版本最稳妥方案,通过shell shim拦截java/javac/mvn命令确保path与java_home同步;需brew install jenv、配置~/.zshrc、手动add各jdk的contents/home路径、执行jenv rehash,并支持global/shell/local三级切换。

在Mac终端中安装多个JDK版本并实现灵活切换,是Java开发者日常高频操作——尤其当你同时维护Spring Boot 2.x(需JDK 8/11)和新项目(要求JDK 17+)时,必须确保java、javac、mvn命令指向正确版本,否则编译失败或运行时异常会立刻出现。
下载并安装多个JDK版本
先确认芯片类型:点击左上角苹果图标→「关于本机」,查看处理器是Intel还是Apple M系列。这决定你该下x64还是arm64版本。
前往Oracle官网或Eclipse Temurin下载页,分别获取JDK 8与JDK 17(推荐LTS长期支持版)的.dmg安装包。
双击.dmg文件→运行内部.pkg安装程序→按向导点击「继续」「安装」→输入管理员密码完成安装。
两个版本会自动并存于同一目录:/Library/Java/JavaVirtualMachines/,互不覆盖。安装后无需重启,但必须验证路径是否真实存在。
用jenv统一管理并切换JDK
jenv是Mac生态下最可靠的选择,它不只是改JAVA_HOME,而是通过shell shim拦截java/javac/mvn等命令,强制PATH与JAVA_HOME同步生效——避免alias方案里“变量变了但命令没变”的经典失效问题。
执行brew install jenv安装工具;若未装Homebrew,先运行/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"。
将以下两行追加到~/.zshrc(M系列Mac默认shell):
export PATH="$HOME/.jenv/bin:$PATH"eval "$(jenv init -)"
运行source ~/.zshrc使配置立即生效;若提示“env has been updated”,说明jenv插件链已加载成功。
执行/usr/libexec/java_home -V列出所有已装JDK及其完整路径,例如:
• /Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home
• /Library/Java/JavaVirtualMachines/jdk-17.0.9.jdk/Contents/Home
逐个注册进jenv:jenv add /Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Homejenv add /Library/Java/JavaVirtualMachines/jdk-17.0.9.jdk/Contents/Home
【jenv rehash必须执行】——新增JDK后不运行此命令,java命令将报错“command not found”,因为shim垫片尚未生成。
执行jenv versions,输出应类似:* 1.8 17.0
星号表示当前全局生效版本。
三种场景下的切换方式
第一步:全局默认(影响所有新开终端)jenv global 17.0 → 所有新打开的终端默认使用JDK 17jenv global --unset → 恢复为系统原生Java(慎用,可能指向过旧版本)
第二步:当前终端临时切换(退出即失效)jenv shell 1.8 → 立即切换,适合快速验证老项目能否启动
第三步:绑定项目目录(cd进入自动生效)
① 进入你的Spring Boot 2.7项目根目录
② 运行jenv local 1.8
③ jenv自动生成.java-version文件,下次cd进该目录,JDK自动切为1.8











