如何在一台計算機上安裝多個 JDK 版本


前言

對於使用 Java 語言開發的朋友可能會遇到這種情況,有時想學習和探索 Java 的最新版本提供的一些新特性,比如 Java 11,但你無法將其安裝在自己的計算機上,因為你的團隊正在使用比這個舊的版本(我們目前用的 Java 8),你並不想影響目前的項目。或者你目前是在維護和開發多個項目,而這些不同的項目使用的 JDK 版本不一樣,比如那些維護的老項目使用的是 JDK 8,而新項目你打算使用比較新的版本 JDK 11,以上這些情況都需要在計算機上安裝多個 JDK,並且應該能夠在多個版本之間方便快速的切換。今天要介紹的主角 SDKMAN 可以很好的解決上面這種問題,它提供了在同一台計算機上對多個版本的開發工具包管理。需要注意的是:這個工具只適用於類 Unix 的系統(比如:Mac OSX、Linux、Cygwin、Solaris、FreeBSD 等)。

SDKMan 簡介

直接引用 SDKMan 官網上的介紹如下:

SDKMAN! is a tool for managing parallel versions of multiple Software Development Kits on most Unix based systems. It provides a convenient Command Line Interface (CLI) and API for installing, switching, removing and listing Candidates.

簡單來說就是其提供了管理多個版本開發工具包的能力,同時也提供了一些命令行接口讓我們方便安裝、版本切換、版本移除和顯示版本列表。關於 SDKMan 還有幾個要點如下:

  1. SDKMan 是由開源社區開發的,免費使用,。
  2. SDKMan 是用 bash 編寫的,它只需要您的系統上安裝了 curl 和 zip / unzip 命令即可。
  3. SDKMan 可以為 JVM 安裝大約 29 個軟件開發包,比如 Java、Groovy、Scala、Kotlin、Gradle、Maven、Spark、Spring Boot 等。
  4. SDKMan 可以自動處理幫我們配置 *_HOME(e.g.:JAVA_HOME) 和 PATH 環境變量,因此我們不需要擔心切換版本后這些環境變量的設置。

安裝 SDKMan

SDKMan 可以運行在任何類 Unix 系統上,我們只需要在命令行輸入以下命令即可安裝:

curl -s "https://get.sdkman.io" | bash

install-sdkman.png

然后執行以下命令,加載文件 sdkman-init.sh 到當前環境,執行完該命令之后我們可以通過 sdk version 來驗證是否安裝成功,同時還可以通過 sdk help 命令顯示有關 sdk 命令用法和幫助(PS: 對於使用 Windows 環境的朋友可以安裝 Cygwin 或 Git Bash 運行以上命令)。

source "$HOME/.sdkman/bin/sdkman-init.sh"

verify-sdkman-install.png

使用 SDKMan 安裝 JDK

前面已經介紹過,SDKMan 支持多達大約 29 個軟件開發包管理,我們也可以使用 sdk list 命令來查看支持的完整列表,本文主要介紹 Java 相關的內容,可以通過命令 sdk list java 來查看支持安裝的 Java 版本。

sdk-list-java.png

使用以下命令安裝 Java 11 :

sdk install java 11.0.7.hs-adpt

該命令會花費一些時間,因為它會在我們的計算機上下載對應版本的 JDK,執行完成之后 SDKman 會自動給我們配置好 JAVA_HOME 和 PATH 等環境變量,可以通過 Java -version 命令驗證。

sdk-install-jdk-11

現在,如果檢查 Java 版本和 JAVA_HOME 環境變量,可以看到當前 Java 的版本已更新為 11.0.7。

java-version-verify

可以使用以下命令來設置默認使用的 JDK 版本。

sdk default java 11.0.7.hs-adpt

將 SDKMan 指向已安裝 Java 版本

如果在你安裝 SDKMan 之前本地電腦已經安裝了 JDK 版本,默認是無法識別到的,那么你需要進行以下配置才能讓 SDKMan 識別已安裝的版本,首先,第一步你要先找到你的 Java 安裝目錄,我本地 Mac 的安裝目錄是 /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk,然后使用命令 ln -s 來為 Java 安裝目錄建立符號鏈接。

point-sdkman-existing-installd-version.png

多個 JDK 版本切換示例

SDKMan 提供了命令 sdk use java <version_want_to_use> 在多個版本之間進行切換,使用 sdk use java jdk1.8.0_181.jdk 命令來使用之前本地安裝的 Java 8。

sdk-use-jdk8.png

使用命令 sdk use java 11.0.7.hs-adpt 來設置版本為 Java 11。

sdk-use-java11

需要注意的是:使用命令 sdk use java 只在當前會話有效,如果你關閉終端並再次打開它,則將使用以前安裝的版本,不會改變你本地使用的版本,此時可以使用 sdk default java 來設置永久生效。

如何卸載指定的 JDK 版本

如果你想要卸載任何已安裝的 JDK 版本,比如: 11.0.7.hs-adpt,可以使用以下命令卸載:

sdk uninstall java 11.0.7.hs-adpt

此時,如果你想再次安裝之前通過 SDKMan 卸載的版本,此時不會再次重新下載,會提示 Found a previously downloaded java 11.0.7.hs-adpt archive. Not downloading it again...,因為之前刪除操作並沒有真正的從你計算機上刪除源壓縮包文件。

IntelliJ IDEA 使用 SDMan 安裝 JDK

SDKMan 所有安裝的 JDK 都放在目錄 .sdkman/candidates/java/,你可以在你當前用戶的 home 文件夾下面看到該文件夾(注意是隱藏文件夾)。

show-sdkman-directory.png

在 IntelliJ IDEA 中打開任何一個 Java 項目后,您可以按 Command + : 快捷鍵打開項目結構窗口,在 Project SDK 模塊選擇新建一個 JDK 后輸入你需要的 JDK 版本在 SDKMan 中的路徑即可。

idea-set-jdk-version.png

因為 .sdkman 是隱藏文件夾不太方便查找,可以使用以下命令創建一個非隱藏文件夾指向它。

ln -s ~/.sdkman ~/sdkman


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM