如何使用 SDKMAN管理 Linux 系統上的Java 開發工具包
導讀 | 在本部落格中,你將學習到如何使用 SDKMAN管理 系統上的幾個Java 開發工具包(JDK)。 此外,除了JDK,一些軟體開發工具包(SDK)也可以通過 SDKMAN 去管理。 |
不久前,我的一位同事向我展示了他是如何使用 SDKMAN,以及如何輕鬆在他的 Linux 系統上維護不同版本的 JDK、Maven等等。我以前聽說過 SDKMAN,當時沒有花時間去仔細研究,不過現在我已經掌握了它的使用方法。
在開始使用 SDKMAN 之前,我檢視了我的 Linux上JDK的版本(使用的是Ubuntu 20.04.4 LTS 版本)。
首先,我查了下update-alternatives 返回的Java版本的列表。發現我的系統裡有兩個Java 11版本。
Shell$ update-alternatives --list java /usr/lib/jvm/java-11-openjdk-amd64/bin/java /usr/lib/jvm/jdk-11.0.3+7/bin/java
我還通過 IntelliJ 安裝過JDK,這些可以在你係統的home 目錄下的.Jdks裡找到。這就有了3個不同的Java版本。
Shell $ ls .jdks/ openjdk-14.0.1 openjdk-16.0.2 openjdk-14.0.1-intellij-downloader-info.txt openjdk-17
所以結論就是:我已經把系統搞的一團糟了。現在,讓我們看看 SDKMAN 是否能夠幫助我去清理系統環境,並刪除所有冗餘的JDK。
SDKMAN 的安裝非常簡單,只需要執行以下的 :
Shell $ curl -s "| bash ... All done! Please open a new terminal, or run the following in the existing one: source "/home//.sdkman/bin/sdkman-init.sh" Then issue the following command: sdk help Enjoy!!!
通過source命令讀取和執行所需要的初始化檔案裡的命令:
Shell $ source "/home//.sdkman/bin/sdkman-init.sh"
您可以通過請求 SDKMAN 的版本來驗證安裝是否成功。
Shell $ sdk version ==== BROADCAST ================================================================= * 2022-03-03: jbang 0.90.2 available on SDKMAN! https://github.com/jbangdev/jbang/releases/tag/v0.90.2 * 2022-03-02: quarkus 2.7.3.Final available on SDKMAN! * 2022-02-28: micronaut 3.3.4 available on SDKMAN! ================================================================================ SDKMAN 5.13.2
如你所見,最新版本也展示出來了,這對於獲得最新的可用版本通知同樣非常有幫助。
以上就是SDKMAN安裝的全部內容。
您可以通過檢視網站或者執行list 命令來了解哪些工具包可以通過 SDKMAN 進行安裝。您也可以重新通過less這個基本命令進行分頁來翻閱和搜尋列表。
Shell $ sdk list
可以通過list命令字尾java引數來獲取更詳細的JDK可用版本列表,當然這些可用的 JDK也可以在網站上找到。此外也可以重新通過less命令進行分頁輸出。
Shell $ sdk list java
首先,我將要核實系統中預設使用的是哪個版本的 Java。看來我使用的是 AdoptOpenJDK 11.0.3版本,這個比我預想的要老。
Shell $ java --version openjdk 11.0.3 2019-04-16 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.3+7) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.3+7, mixed mode)
從 SDKMAN選擇由Adoptium 提供的名為Eclipse Temurin 的AdoptOpenJDK,安裝最新的 JDK 17 LTS 版本。
Shell $ sdk install java 17.0.2-tem Downloading: java 17.0.2-tem In progress... Repackaging Java 17.0.2-tem... Done repackaging... Installing: java 17.0.2-tem Done installing! Setting java 17.0.2-tem as default.
再次驗證下預設的 Java 的版本號,它已經更改為你剛剛安裝的版本。
Shell $ java --version openjdk 17.0.2 2022-01-18 OpenJDK Runtime Environment Temurin-17.0.2+8 (build 17.0.2+8) OpenJDK 64-Bit Server VM Temurin-17.0.2+8 (build 17.0.2+8, mixed mode, sharing)
當然也可以通過同樣的方式安裝 JDK 11 LTS 版本。最後問題來了,你是否希望這個 JDK 成為預設版本?當然不是了,JDK 17才是最新 LTS 版本,理應作為預設版本。
Shell $ sdk install java 11.0.14-tem Downloading: java 11.0.14-tem In progress... Repackaging Java 11.0.14-tem... Done repackaging... Installing: java 11.0.14-tem Done installing! Do you want java 11.0.14-tem to be set as default? (Y/n): n
如果您改變初衷,仍然希望使用JDK 11作為預設版本,那麼您可以使用default命令來實現這一點。
Shell $ sdk default java 11.0.14-tem Default java version set to 11.0.14-tem
對此驗證一下:
Shell $ java --version openjdk 11.0.14 2022-01-18 OpenJDK Runtime Environment Temurin-11.0.14+9 (build 11.0.14+9) OpenJDK 64-Bit Server VM Temurin-11.0.14+9 (build 11.0.14+9, mixed mode)
然後把它重新設定為 JDK 17。
Shell $ sdk default java 17.0.2-tem Default java version set to 17.0.2-tem
當然也可以僅通過在終端回話中使用 use 命令來更改預設的 JDK。
Shell $ sdk use java 11.0.14-tem Using java version 11.0.14-tem in this shell.
在這個命令視窗中,看到當前使用的JDK版本是JDK11。
Shell $ java --version openjdk 11.0.14 2022-01-18 OpenJDK Runtime Environment Temurin-11.0.14+9 (build 11.0.14+9) OpenJDK 64-Bit Server VM Temurin-11.0.14+9 (build 11.0.14+9, mixed mode)
開啟另一個終端視窗,發現JDK版本仍然是 JDK 17。需要注意的是, JAVA_HOME 環境變數也是指向正確的 Java 版本。
Shell $ echo $JAVA_HOME /home//.sdkman/candidates/java/current
當前的JDK已經是通過 SDKMAN 安裝的,是時候清除系統中的其他JDK了。
Shell $ dpkg --list | grep jdk ii openjdk-11-jre-headless:amd64 11.0.13+8-0ubuntu1~20.04
移除openjdk-11-jre-headless:amd64
Shell $ sudo apt remove openjdk-11-jre-headless:amd64
再次通過 update-alternatives命令進行驗證,我們注意到仍然存在一個可用的Java 11的版本。
Shell $ update-alternatives --list java /usr/lib/jvm/jdk-11.0.3+7/bin/java
通過update-alternatives命令進行移除。
Shell $ sudo update-alternatives --remove "java" /usr/lib/jvm/jdk-11.0.3+7/bin/java update-alternatives: removing manually selected alternative - switching java to auto mode
通過update-alternatives命令進行驗證,它已經移除了。
Shell $ update-alternatives --list java update-alternatives: error: no alternatives for java
但是,它並沒有從檔案系統中刪除,需要導航到/usr/lib/jvm 目錄,然後刪除 JDK的目錄。
Shell $ sudo rm -rf jdk-11.0.3+7/
剩下要做的就是移除 IntelliJ 安裝的 JDK。它們位於home目錄下的.jdks中。導航到你的Home目錄並移除.jdks目錄。
Shell $ rm -rf .jdks/
開啟 IntelliJ 導航到File – Project Structure,這也是配置 JDK 的位置。有點奇怪的是,它位於Project Structure下面,而不是通常的Settings目錄下。通過點選 + 符號,你可以新增 SDKMAN JDK。
你還需要為自己的工程選擇JDK。
構建你的工程,在日誌中,你會注意到正在使用 SDKMAN JDK。
SDKMAN 是一個可以用來控制不同版本且使用簡單的工具,很有必要成為你開發工具包的一部分。它降低了我係統的混亂程度,讓我可以很容易地控制系統裡的不同版本。此外,還可以使用upgrade命令來檢查是否有新的版本。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2889758/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在 Linux 上如何清理垃圾系統管理員Linux
- Linux系統上資料庫管理和開發工具DBeaver使用安裝介紹Linux資料庫
- 教你如何在 Linux 系統上安裝 JavaLinuxJava
- 化工能耗管理系統開發能源線上監控系統開發
- Java開發進銷存管理系統Java
- Linux系統上使用nvm管理nodejs和npm版本操作LinuxNodeJSNPM
- ERP管理系統是如何進行倉庫管理的呢?ERP管理系統開發
- Linux開發環境搭建——deepin系統的使用Linux開發環境
- Java開發進銷存管理系統(二)Java
- Java開發進銷存管理系統(三)Java
- Linux系統使用者組的管理Linux
- java 基於SSM框架開發線上音樂視訊MV管理系統JavaSSM框架
- Linux系統使用者賬號的管理Linux
- 能耗線上監測系統系統開發方案,工廠能耗管理平臺開發
- java版工程專案管理系統原始碼+系統管理+系統設定+二次開發Java專案管理原始碼
- Linux系統上常見的檔案管理類命令Linux
- 如何在 Linux/Windows/MacOS 上使用 .NET 進行開發LinuxWindowsMac
- java版工程專案管理系統原始碼+系統管理+系統設定+專案管理+合同管理+二次開發Java專案管理原始碼
- Linux系統中grep如何使用?Linux
- Linux系統如何使用Fuser命令Linux
- 企業工程專案管理系統+spring cloud 系統管理+java 系統設定+二次開發專案管理SpringCloudJava
- linux系統管理Linux
- 【Java GUI 程式設計】Swing 使用者介面開發工具包JavaGUI程式設計
- LINUX系統中程式如何管理控制(一)Linux
- 如何在Java中獲取Windows和Linux/Mac系統上的桌面路徑JavaWindowsLinuxMac
- Linux系統管理-系統概述Linux
- 如何弄清 Linux 系統執行何種系統管理程式Linux
- 使用window10系統搭建完善的Linux開發環境Linux開發環境
- 基於SSM開發的健身俱樂部管理系統 JAVA MySQLSSMJavaMySql
- 如何在Linux系統上刷抖音Linux
- 用sdkman管理多個jdk切換JDK
- 推薦一款使用go開發的文件管理系統Go
- Java linux 系統JavaLinux
- mac系統上hdfs java api的簡單使用MacJavaAPI
- 如何在 Fedora 上開始 Java 開發Java
- 如何在 Linux 上使用 kill 和 killall 來管理程式Linux
- 校園圖書管理系統開發-中小學智慧圖書管理系統開發
- 在 Linux 系統中如何管理 systemd 服務Linux