Windows上安裝并使用SDKMAN詳細(xì)教程(JDK多版本管理)
前言
SDKMAN(Software Development Kit Manager)是一個(gè)用于管理和切換不同版本軟件開發(fā)工具包(如 Java、Groovy、Scala 等)的命令行工具。在類 Unix 系統(tǒng)(Linux/macOS)中使用非常廣泛,但在 Windows 上需要借助類似 Git Bash 的 Bash 模擬環(huán)境來運(yùn)行。
說明: SDKMAN 天生在 Linux 和 Mac 上配置簡(jiǎn)單,對(duì)于 Windows 需要幾經(jīng)周折才可以正常使用。它默認(rèn)并不能直接在 Windows 原生 CMD 或 PowerShell 中運(yùn)行,需要使用模擬的 Bash 環(huán)境(如 Git Bash),這也是特意編寫本文的原因。本文將詳細(xì)介紹如何在 Windows 上借助 Git Bash 安裝并使用 SDKMAN 管理 JDK。
一、準(zhǔn)備工作:配置 Git Bash 支持 zip 命令
SDKMAN 在安裝時(shí)依賴 zip 命令,而 Git for Windows 默認(rèn)只自帶 unzip 命令,不包含 zip 命令,因此我們需要為 Git Bash 手動(dòng)添加 zip 功能。
1. GnuWin Files 下載地址
我們可以從 GnuWin Files 站點(diǎn)下載適用于 Windows 的 GNU 工具,該站點(diǎn)提供了許多常用 GNU 工具的 Windows 兼容版本。
- 站點(diǎn)地址: https://sourceforge.net/projects/gnuwin32/files/
在該站點(diǎn)中,可下載 zip 的二進(jìn)制壓縮包。
2. 使用便捷下載鏈接
為方便讀者,我提供了以下 zip 工具的打包文件供下載:
- zip 工具包:點(diǎn)擊下載 zip-3.0-bin.zip
- bzip2 工具包:點(diǎn)擊下載 bzip2-1.0.5-bin.zip
3. 配置 Git Bash 支持 zip 命令
下載完成后,請(qǐng)按以下步驟操作:
- 解壓縮上述兩個(gè) zip 文件。
- 將
zip.exe和bzip2.dll文件拷貝至 Git 安裝目錄下的\usr\bin文件夾中。 - 一般來說,Git 安裝目錄為:
C:\Program Files\Git\usr\bin
?? 注意:確保文件被寫入 usr\bin 目錄,這樣才能在 Git Bash 中識(shí)別 zip 命令。
4. 驗(yàn)證配置是否成功
打開 Git Bash 窗口,運(yùn)行以下命令檢查是否可以正常識(shí)別:
zip --version
如果命令能正常輸出版本信息,則表示配置成功,我們可以繼續(xù)進(jìn)行 SDKMAN 的安裝。
二、安裝 SDKMAN
接下來,我們正式開始 SDKMAN 的安裝流程。
1. 設(shè)置 SDKMAN 目錄環(huán)境變量并使其生效
首先需要指定 SDKMAN 的安裝目錄(注意:此時(shí)不要手動(dòng)創(chuàng)建該目錄,SDKMAN 會(huì)自動(dòng)創(chuàng)建):
export SDKMAN_DIR="/d/JavaDev/sdkman"
你也可以將該命令加入 .bashrc 或 .bash_profile 文件中,以實(shí)現(xiàn)永久配置(建議)。
echo 'export SDKMAN_DIR="/d/JavaDev/sdkman"' >> ~/.bashrc
添加環(huán)境變量到配置文件后,需要重新加載配置文件使其生效:
source ~/.bashrc
然后驗(yàn)證環(huán)境變量是否設(shè)置成功:
echo $SDKMAN_DIR
如果輸出 /d/JavaDev/sdkman,則表示環(huán)境變量配置成功。
2. 安裝 SDKMAN
執(zhí)行以下命令自動(dòng)下載并安裝 SDKMAN:
curl -s "https://get.sdkman.io" | bash
安裝完成后,會(huì)提示你執(zhí)行一行命令來初始化 SDKMAN,示例如下:
source "$SDKMAN_DIR/bin/sdkman-init.sh"
執(zhí)行它后即可激活 SDKMAN。
3. 驗(yàn)證安裝是否成功
執(zhí)行以下命令檢查 SDKMAN 是否安裝成功:
sdk version
如果輸出 SDKMAN 的版本號(hào),則安裝成功。
三、使用 SDKMAN 管理 JDK
SDKMAN 最核心的功能之一是管理 JDK 的安裝與切換。
1. 查看 JDK 版本列表
sdk list java
該命令會(huì)顯示所有可用的 JDK 版本,包括:
- Use 列顯示
>>>表示當(dāng)前正在使用的版本 - Status 列顯示
installed表示已安裝的版本 - 無任何標(biāo)識(shí)的表示可安裝但尚未安裝的版本
2. 安裝指定版本 JDK
例如安裝 OpenJDK 17:
sdk install java 17.0.8-tem
3. 查看當(dāng)前已安裝的 JDK
再次運(yùn)行 sdk list java 命令,已安裝的版本會(huì)顯示 > 標(biāo)識(shí)。
4. 查看 JDK 安裝路徑
使用以下命令查看指定 JDK 版本的安裝路徑:
sdk home java 17.0.8-tem
該命令會(huì)輸出對(duì)應(yīng) JDK 版本的實(shí)際安裝目錄路徑。
5. 切換默認(rèn) JDK 版本
請(qǐng)使用管理員運(yùn)行 Git Bash,否則不能正常創(chuàng)建 symlink。
非管理員用戶使用命令切換 sdk 版本時(shí)會(huì)出現(xiàn)提示 “
cannot create current symlink, fall back to copy!”。
從提示可以看出,創(chuàng)建軟連接失敗,改為使用拷貝sdk的方式,這雖然不影響最終使用,但是我們還是推薦使用管理員以方式操作(正確的symlink可以使用sdk current java查看當(dāng)前版,非管理員方式的 copy 結(jié)果查看不了當(dāng)前版本)。
使用該命令切換默認(rèn) JDK(重啟會(huì)話后仍然有效):
sdk default java 17.0.8-tem
小技巧:命令行輸入
sdk default java后按兩次tab鍵會(huì)列出所有已經(jīng)安裝的版本,方便拷貝切換。
6. 臨時(shí)切換 JDK 版本
以下命令是臨時(shí)切換,只在當(dāng)前會(huì)話生效:
sdk use java 11.0.20-tem
7. 卸載 JDK
sdk uninstall java 11.0.20-tem
四、配置系統(tǒng)環(huán)境變量
通過 SDKMAN 安裝的 JDK 只能在 Git Bash 環(huán)境中使用。如果需要在 Windows 原生 CMD 或 PowerShell 中使用 java 命令,需要配置系統(tǒng)環(huán)境變量。
1. 問題現(xiàn)象
在 Windows CMD 命令行中執(zhí)行以下命令會(huì)提示"不是內(nèi)部或外部命令":
java -version
2. 解決方案:配置 JAVA_HOME 和 Path 環(huán)境變量
為了保持 SDKMAN 的版本切換功能,我們應(yīng)該將系統(tǒng)環(huán)境變量指向 SDKMAN 的當(dāng)前默認(rèn)版本目錄:
- 右鍵"此電腦" → “屬性” → “高級(jí)系統(tǒng)設(shè)置”
- 點(diǎn)擊"環(huán)境變量"
- 在"系統(tǒng)變量"中點(diǎn)擊"新建",添加 JAVA_HOME 環(huán)境變量:
- 變量名:
JAVA_HOME - 變量值:
D:\JavaDev\sdkman\candidates\java\current
- 變量名:
- 在"系統(tǒng)變量"中找到"Path"變量,選中后點(diǎn)擊"編輯"
- 點(diǎn)擊"新建",添加:
%JAVA_HOME%\bin - 點(diǎn)擊"確定"保存所有更改
?? 關(guān)鍵點(diǎn):
current目錄指向當(dāng)前通過sdk default命令設(shè)置的默認(rèn)版本- 當(dāng)通過 SDKMAN 切換默認(rèn)版本時(shí),
current目錄會(huì)自動(dòng)指向新的默認(rèn)版本 - 這樣配置可以保持 SDKMAN 的版本切換功能在 Windows 系統(tǒng)環(huán)境中同樣生效
3. 驗(yàn)證配置結(jié)果
重新打開 CMD 窗口,執(zhí)行:
java -version
如果能正常顯示 Java 版本信息,則配置成功。
4. 驗(yàn)證版本切換功能
在 Git Bash 中切換 JDK 版本后,在 CMD 中驗(yàn)證是否同步:
# 在 Git Bash 中切換默認(rèn)版本 sdk default java 11.0.20-tem # 在 CMD 中驗(yàn)證(需要重新打開 CMD 窗口) java -version
?? 注意:由于 Windows 系統(tǒng)環(huán)境變量的緩存機(jī)制,可能需要重新打開 CMD 窗口才能看到版本切換的效果。
五、結(jié)語
通過以上步驟,你已成功在 Windows 系統(tǒng)中借助 Git Bash 安裝并配置了 SDKMAN,并掌握其管理 JDK 的基本命令。未來你可以用它來輕松管理多版本的 Java、Groovy、Scala 等多種開發(fā)工具,提升開發(fā)效率。
希望本教程對(duì)你有幫助。如需進(jìn)一步學(xué)習(xí) SDKMAN 的高級(jí)使用方法,歡迎參考其官方文檔。
到此這篇關(guān)于Windows上安裝并使用SDKMAN詳細(xì)教程的文章就介紹到這了,更多相關(guān)Windows安裝使用SDKMAN內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入講解基于JDK的動(dòng)態(tài)代理機(jī)制
眾所周知相比于靜態(tài)代理,動(dòng)態(tài)代理避免了開發(fā)人員編寫各個(gè)繁鎖的靜態(tài)代理類,下面這篇文章主要給大家介紹了關(guān)于基于JDK的動(dòng)態(tài)代理機(jī)制的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-07-07
SpringBoot下使用MyBatis-Puls代碼生成器的方法
這篇文章主要介紹了SpringBoot下使用MyBatis-Puls代碼生成器的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
解決mybatis 中collection嵌套collection引發(fā)的bug
這篇文章主要介紹了解決mybatis 中collection嵌套collection引發(fā)的bug,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12
SpringMvc直接接收json數(shù)據(jù)自動(dòng)轉(zhuǎn)化為Map的實(shí)例
今天小編就為大家分享一篇SpringMvc直接接收json數(shù)據(jù)自動(dòng)轉(zhuǎn)化為Map的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08
springboot+springJdbc+postgresql 實(shí)現(xiàn)多數(shù)據(jù)源的配置
本文主要介紹了springboot+springJdbc+postgresql 實(shí)現(xiàn)多數(shù)據(jù)源的配置,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
spring的TransactionalEventListener事務(wù)感知源碼解析
這篇文章主要為大家介紹了spring的TransactionalEventListener事務(wù)感知源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
在java poi導(dǎo)入Excel通用工具類示例詳解
這篇文章主要給大家介紹了關(guān)于在java poi導(dǎo)入Excel通用工具類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
解決MyEclipse中的Building workspace問題的三個(gè)方法
這篇文章主要介紹了解決MyEclipse中的Building workspace問題的三個(gè)方法,需要的朋友可以參考下2015-11-11

