【Mac快速切换JDK】Mac 使用 Homebrew + jenv 快速切换 JDK 版本

Mac 开发时经常需要在 JDK 8、17、21 之间切换。使用 jenv 可以不用反复修改 JAVA_HOME,切换起来比较方便。

一、查看当前安装的 JDK

复制代码
/usr/libexec/java_home -V

例如:

复制代码
21.0.10 (arm64) "Microsoft"
17.0.19 (arm64) "Homebrew"
17.0.19 (arm64) "Microsoft"
1.8.0_492 (arm64) "Amazon"

说明电脑上已经安装了 JDK 8、17、21。


二、安装 jenv

如果还没有安装:

复制代码
brew install jenv

配置环境变量:

复制代码
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc
source ~/.zshrc

检查:

复制代码
jenv --version

三、把 JDK 添加到 jenv

使用实际的 JDK 路径,不要直接复制 xxx.jdk

例如 JDK 21:

复制代码
jenv add /Users/liangchen/Library/Java/JavaVirtualMachines/ms-21.0.10/Contents/Home

JDK 17:

复制代码
jenv add /opt/homebrew/Cellar/openjdk@17/17.0.19/libexec/openjdk.jdk/Contents/Home

JDK 8:

复制代码
jenv add /Users/liangchen/Library/Java/JavaVirtualMachines/corretto-1.8.0_492/Contents/Home

查看已经添加的版本:

复制代码
jenv versions

四、切换 JDK

切换到 JDK 21:

复制代码
jenv global 21

切换到 JDK 17:

复制代码
jenv global 17

切换到 JDK 8:

复制代码
jenv global 1.8

查看当前 jenv 使用的版本:

复制代码
jenv version

再确认 Java:

复制代码
java -version

五、如果切换后还是原来的 JDK

例如执行:

复制代码
jenv global 21
java -version

结果仍然显示 JDK 17。

这种情况通常是 jenv 已经切换了,但终端的 PATH/JAVA_HOME 仍然指向其他 JDK

先执行:

复制代码
jenv enable-plugin export

然后:

复制代码
source ~/.zshrc

再检查:

复制代码
jenv version
which java
java -version
echo $JAVA_HOME

正常情况下,which java 应该指向:

复制代码
/Users/你的用户名/.jenv/versions/21/bin/java

而不是:

复制代码
/opt/homebrew/...

如果还是不对,可以检查:

复制代码
grep -n "JAVA_HOME\|java\|jenv" ~/.zshrc

如果 .zshrc 里面存在手动设置的:

复制代码
export JAVA_HOME=...
export PATH=...

可能会覆盖 jenv 的配置,需要调整这些配置。


六、项目单独使用指定 JDK

如果不同项目需要不同 JDK,不建议每次使用 global 切换,可以使用 local

例如进入 Spring Boot 项目:

复制代码
cd ~/Desktop/liangchen/code/ai-growth-academy-backend

指定 JDK 21:

复制代码
jenv local 21

此时项目目录会生成:

复制代码
.java-version

以后进入这个项目目录,jenv 会自动使用 JDK 21。

另一个项目需要 JDK 8:

复制代码
cd ~/Desktop/old-project
jenv local 1.8

这样两个项目可以分别使用不同版本,不需要手动切换。


七、常用命令

复制代码
# 查看本机所有 JDK
/usr/libexec/java_home -V

# 查看 jenv 中的 JDK
jenv versions

# 查看当前版本
jenv version

# 全局使用 JDK 21
jenv global 21

# 全局使用 JDK 17
jenv global 17

# 全局使用 JDK 8
jenv global 1.8

# 当前项目使用 JDK 21
jenv local 21

# 查看 Java 实际路径
which java

# 查看 Java 版本
java -version
相关推荐
码场老菜鸟4 小时前
C++ 指针的深度理解与应用
java·c++·算法
霸道流氓气质4 小时前
Spring AI Function Calling实现原理与自定义函数
java·spring·microsoft
kingbal4 小时前
MAC:chatgpt登陆报错签名异常
macos·chatgpt
k4m7v2pz4 小时前
macOS 窗口最小化:三种写法的实测对比与可复用脚本
macos·窗口管理·截屏·applescript·bevy·ai自动化
OPEN-F4 小时前
C++并发编程:条件变量与原子操作
java·开发语言·c++
南城以南溫暖如初1474 小时前
社群电商实战指南:从零搭建高转化社区的技术架构
java·spring boot·mysql·系统架构·vue·mybatis
南城以南溫暖如初1474 小时前
会员返利商城系统开发实战:架构设计与实现指南
java·spring boot·mysql·vue·mybatis
神仙别闹4 小时前
基于 C++实现(控制台)车辆信息管理系统
开发语言·c++
智塑未来4 小时前
常用的在线ping测试工具有哪些
服务器·开发语言·php
Shaoshing4 小时前
Java SE Java EE 和 JavaME区别
java