概要
在 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 等)時尤為方便。