概要
在 macOS 上安装了多个 JDK 后,可以通过系统自带的 /usr/libexec/java_home
工具来查询并切换不同版本的 Java。只需在终端中执行 /usr/libexec/java_home -V
列出所有已安装的 JDK,然后将你想使用的版本路径赋值给环境变量 JAVA_HOME
,并将其添加到 PATH
。最后,将这些设置写入你的 shell 启动文件(如 ~/.zshrc
或 ~/.bash_profile
),即可在每次新开终端时自动生效。
一、查询已安装的 JDK 版本
-
打开 终端,输入:
/usr/libexec/java_home -V
该命令会输出所有已安装的 Java 虚拟机列表及其安装路径,例如:
Matching Java Virtual Machines (3): 17.0.2 (x86_64) "Oracle Corporation" - "Java SE 17.0.2" /Library/Java/JavaVirtualMachines/jdk-17.0.2.jdk/Contents/Home 1.8.0_202 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
上面是一个示例,像我的电脑上装的jdk就有点乱了
二、临时切换 JDK 版本
如果仅想在当前终端会话中切换版本,可直接运行:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
export PATH="$JAVA_HOME/bin:$PATH"
-v 1.8
可替换为你需要的版本号(如-v 17
、-v 11.0.2
等)([Stack Overflow][2])- 切换后,执行
java -version
即可验证当前使用的 Java 版本
三、永久切换 JDK 版本
为了在每次打开终端时都自动使用同一版本,需要将上述环境变量配置写入 shell 启动文件。
1. 确定使用的 Shell
- macOS 默认从 macOS Catalina 起采用 Zsh,启动文件为
~/.zshrc
。 - 如果你使用的是 Bash,则应编辑
~/.bash_profile
或~/.bashrc
。
2. 编辑启动文件
以 Zsh 为例,打开或创建 ~/.zshrc
:
vim ~/.zshrc
或者
nano ~/.zshrc
在文件末尾添加:
# 指向 Java 17(示例)像我的电脑上jdk装的有点乱了,可以指定特定的版本比如17.0.15
export JAVA_HOME=$(/usr/libexec/java_home -v 17.0.15)
export PATH="$JAVA_HOME/bin:$PATH"
保存并退出(Ctrl+X
→ Y
→ Enter
/获取:wq保存(vim的操作))
3. 使配置生效
source ~/.zshrc
java -version
此时终端应显示你指定的 Java 版本信息。
四、使用别名或脚本快速切换(可选)
如果经常在不同项目间切换 JDK,可以在启动文件中定义别名或函数,例如:
# ~/.zshrc 中
alias java8='export JAVA_HOME=$(/usr/libexec/java_home -v 1.8); export PATH="$JAVA_HOME/bin:$PATH"; java -version'
alias java17='export JAVA_HOME=$(/usr/libexec/java_home -v 17); export PATH="$JAVA_HOME/bin:$PATH"; java -version'
这样在终端中仅需执行 java8
或 java17
即可快速切换版本。
五、可以尝试:使用 SDKMAN!
sdkman能让你在 Unix 系统上轻松管理多个软件开发工具包,像 apt、pip、RVM 和 rbenv一样工具
也可以理解为node的版本管理的工具nvm一样的工具软件
SDKMAN! 是一个管理多种 SDK(包括 Java)版本的工具。安装后可用一条命令列出并切换 JDK:
sdk list java
sdk use java 17.0.2-tem
这种方式在管理众多 Java 发行版(Oracle、Temurin、Amazon Corretto 等)时尤为方便。