必须使用jenv管理:先用brew install jenv安装,配置~/.zshrc并source生效,再通过jenv add注册各jdk路径(如zulu-8.jdk/contents/home),最后用jenv global、local或shell命令实现全局、项目级或会话级切换,确保java和mvn -version版本一致。

在 macOS Big Sur 上同时使用 JDK 8、JDK 11 和 JDK 17 进行不同项目开发时,手动反复修改 JAVA_HOME 容易出错、覆盖路径、导致 Maven 编译失败或 IDE 识别错版本,必须用可切换、可隔离、可持久的方案管理多个 JDK。
确认已安装多个 JDK 版本
打开终端,执行:/usr/libexec/java_home -V
输出应类似:
Matching Java Virtual Machines (3):
17.0.5 (arm64) "Eclipse Temurin" "/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home"
11.0.20 (arm64) "Zulu" "/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home"
1.8.0_382 (arm64) "Zulu" "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home"
若只显示 1 个或 0 个,说明未装齐——必须先完成各版本 JDK 的静默安装或 GUI 安装,再继续后续步骤。M1/M2 芯片务必使用 arm64 架构 JDK(如 Azul Zulu 或 Eclipse Temurin),Intel 芯片可用 Oracle JDK 或 OpenJDK x86_64 版本。
安装 jEnv 管理工具
终端执行:brew install jenv
安装完成后,将 jEnv 加入 shell 启动配置。Big Sur 及之后系统默认使用 zsh,编辑 ~/.zshrc:
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc<br>echo 'eval "$(jenv init -)"' >> ~/.zshrc
立即生效:source ~/.zshrc
验证是否加载成功:jenv --version 应输出类似 0.5.4 的版本号。如果报 command not found,请检查 ~/.zshrc 是否写入成功,并确认未被其他 shell 配置文件(如 ~/.zprofile)覆盖。
注册所有已安装 JDK 到 jEnv
逐条执行以下命令,把每个 JDK 主目录加入 jEnv 管理池:
第一步:jenv add /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
第二步:jenv add /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
第三步:jenv add /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
每执行一条,终端会提示 added /path/to/jdk;全部加完后运行 jenv versions,应看到带星号(*)标记的当前激活版本,以及全部注册版本列表(含 8、11、17)。注意:路径必须精确到 Contents/Home,少一个层级会导致 jEnv 无法识别为有效 JDK。
设置全局、项目级和临时 JDK 版本
方法一:设为全局默认(适用于日常终端命令、未指定版本的脚本)jenv global 1.8 → 切换到 JDK 8jenv global 11 → 切换到 JDK 11jenv global 17 → 切换到 JDK 17
方法二:为特定项目目录绑定 JDK(推荐,避免跨项目污染)
进入项目根目录,例如:cd ~/workspace/my-spring-boot-2.7-app
执行:jenv local 11
该操作会在当前目录生成 .java-version 文件,内容为 11;下次 cd 进入此目录,jEnv 自动切换 JDK 11,离开即恢复全局版本。
方法三:仅对当前终端会话生效(调试或快速验证用)jenv shell 17
此时 java -version 显示 17,关闭终端即失效,不影响其他窗口。
验证环境是否生效
新开一个终端窗口(确保加载了最新 .zshrc),执行:java -version
输出应与你设定的版本一致,例如:openjdk version "11.0.20" 2023-07-18
再验证 Maven 是否同步识别:mvn -version
其中 Java version 行必须与 java -version 输出完全一致;若仍显示 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin,说明系统残留旧 JRE 插件,需手动删除:sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin。











