Windows系統(tǒng)下JDK版本一鍵、自動(dòng)切換工具圖文教程
一、背景介紹
作為Java開(kāi)發(fā)者,我們經(jīng)常需要在不同的JDK版本之間切換,比如:
- 維護(hù)基于JDK8的老項(xiàng)目
- 開(kāi)發(fā)使用JDK17的Spring Boot 3.x項(xiàng)目
- 嘗試JDK21的新特性
- 測(cè)試不同JDK版本的性能差異
手動(dòng)切換JDK版本需要修改系統(tǒng)環(huán)境變量,過(guò)程繁瑣且容易出錯(cuò)。為了提高開(kāi)發(fā)效率,我們可以開(kāi)發(fā)一個(gè)一鍵切換工具。
以下是完整的jdk切換腳本,安裝好jdk,并配置JAVA_HOME后運(yùn)行switch-jdk.bat
注意:修改腳本中的C:\Users\lk\Desktop為你自己的用戶桌面的路徑


@echo off
:: 獲取管理員權(quán)限但在當(dāng)前窗口執(zhí)行
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
:: 創(chuàng)建臨時(shí)VBS腳本
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
:: 修改為在當(dāng)前窗口運(yùn)行,并且先cd到指定目錄
set "params=%*"
echo UAC.ShellExecute "cmd.exe", "/k cd /d C:\Users\lk\Desktop && ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
)
:: 顯示當(dāng)前目錄
echo 當(dāng)前工作目錄:
cd
echo.
:: 動(dòng)態(tài)生成8-100的版本號(hào)列表
setlocal EnableDelayedExpansion
set "SUPPORTED_VERSIONS="
for /l %%i in (8,1,100) do (
set "SUPPORTED_VERSIONS=!SUPPORTED_VERSIONS! %%i"
)
:: 獲取已安裝的JDK版本
set "INSTALLED_VERSIONS="
for %%v in (%SUPPORTED_VERSIONS%) do (
if defined jdk%%v (
set "INSTALLED_VERSIONS=!INSTALLED_VERSIONS! %%v"
)
)
:: 設(shè)置所有版本的命令別名
for %%v in (%SUPPORTED_VERSIONS%) do (
doskey %%v=call "%~f0" %%v
)
:: 如果沒(méi)有參數(shù),顯示歡迎信息
if "%~1"=="" (
echo JDK切換工具已準(zhǔn)備就緒!
echo 支持JDK版本范圍:8-100
echo ========================================
echo 已安裝的JDK版本:
echo ----------------------------------------
set "found_any="
for %%v in (%SUPPORTED_VERSIONS%) do (
if defined jdk%%v (
set "found_any=1"
set "jdkPath=!jdk%%v!"
echo %%v - JDK%%v
echo 路徑: !jdkPath!
)
)
if not defined found_any (
echo 未檢測(cè)到已安裝的JDK
echo 請(qǐng)先設(shè)置環(huán)境變量,格式為: jdk^<版本號(hào)^>
echo 例如: jdk8, jdk11, jdk17, jdk21 等
)
echo ----------------------------------------
echo 當(dāng)前JAVA_HOME: %JAVA_HOME%
echo 當(dāng)前Java版本:
java -version
echo ----------------------------------------
echo.
echo 使用方法:直接輸入版本號(hào)即可切換
echo 例如: 8 ^(切換到JDK8^)
echo 17 ^(切換到JDK17^)
echo ========================================
echo.
cmd /k
exit /b 0
)
:: 清除之前可能存在的變量
set "version="
set "jdkEnvName="
:: 清理版本號(hào)中的非數(shù)字字符
set "version=%~1"
set "version=%version:jdk=%"
set "version=%version:java=%"
set "version=%version: =%"
:: 驗(yàn)證版本號(hào)是否在支持范圍內(nèi)
set "is_supported="
for %%v in (%SUPPORTED_VERSIONS%) do (
if "%%v"=="%version%" set "is_supported=1"
)
if not defined is_supported (
echo 錯(cuò)誤: 不支持的JDK版本 %version%
echo 支持的版本范圍: 8-100
pause
exit /b 1
)
:: 設(shè)置對(duì)應(yīng)的環(huán)境變量名
set "jdkEnvName=jdk%version%"
:: 驗(yàn)證目標(biāo)JDK環(huán)境變量是否存在
if not defined %jdkEnvName% (
echo 錯(cuò)誤: 找不到 %jdkEnvName% 環(huán)境變量,請(qǐng)確保已正確設(shè)置!
echo 請(qǐng)檢查系統(tǒng)環(huán)境變量中是否存在 %jdkEnvName% 變量。
echo.
echo 已安裝的JDK版本:
for %%v in (%SUPPORTED_VERSIONS%) do (
if defined jdk%%v (
set "jdkPath=!jdk%%v!"
echo %%v - !jdkPath!
)
)
echo.
echo 您可以通過(guò)以下步驟設(shè)置新的JDK版本:
echo 1. 右鍵"此電腦" -^> "屬性" -^> "高級(jí)系統(tǒng)設(shè)置" -^> "環(huán)境變量"
echo 2. 在"系統(tǒng)變量"中添加 %jdkEnvName% 變量
echo 3. 將值設(shè)置為對(duì)應(yīng)JDK的安裝路徑(如:C:\Program Files\Java\jdk-%version%)
pause
exit /b 1
)
:: 顯示當(dāng)前狀態(tài)
echo 當(dāng)前JAVA_HOME: %JAVA_HOME%
echo 準(zhǔn)備切換到: !%jdkEnvName%!
:: 更新JAVA_HOME
echo.
echo 正在切換到 %jdkEnvName% ...
setx JAVA_HOME "%%%jdkEnvName%%%" /M
if %errorLevel% neq 0 (
echo 更新JAVA_HOME失敗!
pause
exit /b 1
)
:: 刷新當(dāng)前會(huì)話的環(huán)境變量
set "JAVA_HOME=!%jdkEnvName%!"
set "PATH=%JAVA_HOME%\bin;%PATH%"
:: 顯示進(jìn)度
echo 環(huán)境變量已更新,正在驗(yàn)證...
echo.
:: 等待環(huán)境變量更新
timeout /t 2 /nobreak >nul
:: 驗(yàn)證Java版本
echo 當(dāng)前Java版本:
echo -------------
java -version
if %errorLevel% neq 0 (
echo Java命令執(zhí)行失敗,請(qǐng)檢查環(huán)境變量設(shè)置!
pause
exit /b 1
)
echo.
echo -------------
echo JAVA_HOME 已更新為: %JAVA_HOME%
echo JDK切換完成!
echo.
:: 保持窗口打開(kāi)并停留在指定目錄
cmd /k cd /d C:\Users\lk\Desktop
二、環(huán)境變量配置說(shuō)明
2.1 基礎(chǔ)環(huán)境變量配置
# CLASSPATH配置 .;%JAVA_HOME%\lib; # JAVA_HOME配置(當(dāng)前使用的JDK版本) %jdk17% # 各JDK版本路徑配置 jdk8=D:\javaWork\jdk1.8.0_181 jdk11=D:\javaWork\jdk11 jdk17=D:\javaWork\jdk17.0.9 jdk21=D:\javaWork\jdk-21 # Path配置(添加Java bin目錄) .;%JAVA_HOME%\bin;
2.2 配置說(shuō)明
- 使用%jdkXX%形式的變量引用,便于動(dòng)態(tài)切換
- JAVA_HOME使用引用形式,只需修改引用值即可切換版本
- Path中使用%JAVA_HOME%確保始終使用當(dāng)前選擇的JDK
三、切換工具實(shí)現(xiàn)
3.1 核心功能實(shí)現(xiàn)
@echo off :: switch-jdk.bat
:: 1. 管理員權(quán)限獲取
nul 2>&1 “%SYSTEMROOT%\system32\cacls.exe” “%SYSTEMROOT%\system32\config\system” if ‘%errorlevel%' NEQ ‘0' ( echo Set UAC = CreateObject(“Shell.Application”) > “%temp%\getadmin.vbs” echo UAC.ShellExecute “cmd.exe”, “/k cd /d C:\Users\lk\Desktop && “”%~s0"” %params%", “”, “runas”, 1 >> “%temp%\getadmin.vbs” “%temp%\getadmin.vbs” del “%temp%\getadmin.vbs” exit /B )
:: 2. 動(dòng)態(tài)版本支持
setlocal EnableDelayedExpansion set “SUPPORTED_VERSIONS=” for /l %%i in (8,1,100) do ( set “SUPPORTED_VERSIONS=!SUPPORTED_VERSIONS! %%i” )
:: 3. 版本檢測(cè)與別名設(shè)置
for %%v in (%SUPPORTED_VERSIONS%) do ( if defined jdk%%v ( set “INSTALLED_VERSIONS=!INSTALLED_VERSIONS! %%v” ) doskey %%v=call “%~f0” %%v )
3.2 核心功能說(shuō)明
- 管理員權(quán)限獲取
- 使用UAC提權(quán)確保能修改系統(tǒng)環(huán)境變量
- 保持在當(dāng)前窗口執(zhí)行,提供更好的用戶體驗(yàn)
- 動(dòng)態(tài)版本支持
- 支持JDK 8-100的所有版本
- 自動(dòng)檢測(cè)系統(tǒng)中已安裝的JDK版本
- 無(wú)需手動(dòng)維護(hù)版本列表
- 命令別名設(shè)置
- 使用doskey設(shè)置簡(jiǎn)化命令
- 支持直接使用版本號(hào)切換(如:8、17)
3.3 版本切換實(shí)現(xiàn)
:: 版本驗(yàn)證和切換 set “jdkEnvName=jdk%version%” if not defined %jdkEnvName% ( echo 錯(cuò)誤: 找不到 %jdkEnvName% 環(huán)境變量 exit /b 1 )
:: 更新JAVA_HOME
setx JAVA_HOME “%%%jdkEnvName%%%” /M
set “JAVA_HOME=!%jdkEnvName%!”
set “PATH=%JAVA_HOME%\bin;%PATH%”
四、使用說(shuō)明
4.1 安裝步驟
環(huán)境變量配置
# 系統(tǒng)變量中添加各JDK版本 jdk8=D:\javaWork\jdk1.8.0_181 jdk11=D:\javaWork\jdk11 jdk17=D:\javaWork\jdk17.0.9 jdk21=D:\javaWork\jdk-21 # 配置JAVA_HOME(初始值) JAVA_HOME=%jdk17% # 配置Path(添加) %JAVA_HOME%\bin
腳本部署
# 將switch-jdk.bat保存到固定目錄或者創(chuàng)建桌面快捷方式
雙擊運(yùn)行
C:\Tools\JDKSwitch\switch-jdk.bat
4.2 使用方法
查看可用版本
switch-jdk.bat
切換JDK版本
# 方式1:直接使用版本號(hào) 8 # 切換到JDK8 17 # 切換到JDK17 # 方式2:使用完整命令 switch-jdk.bat 8 # 切換到JDK8 switch-jdk.bat 17 # 切換到JDK17
4.3 驗(yàn)證切換結(jié)果
# 查看Java版本 java -version # 查看JAVA_HOME echo %JAVA_HOME%
五、擴(kuò)展功能
5.1 添加新JDK版本
- 安裝新版本JDK
- 添加環(huán)境變量:jdkXX=安裝路徑
- 無(wú)需修改腳本,自動(dòng)支持新版本
5.2 錯(cuò)誤處理
- 版本號(hào)驗(yàn)證
- 環(huán)境變量檢查
- 詳細(xì)的錯(cuò)誤提示
- Java命令驗(yàn)證
六、最佳實(shí)踐
- 環(huán)境變量設(shè)置規(guī)范
- 使用統(tǒng)一的命名規(guī)則(jdk + 版本號(hào))
- 路徑中避免空格和特殊字符
- 使用絕對(duì)路徑
- 使用建議
- 創(chuàng)建桌面快捷方式
- 將腳本目錄添加到Path
- 定期清理無(wú)用的JDK版本
- 注意事項(xiàng)
- 首次使用需要管理員權(quán)限
- 某些IDE可能需要重啟
- 注意環(huán)境變量沖突
七、總結(jié)
這個(gè)JDK版本切換工具具有以下優(yōu)勢(shì):
- 使用簡(jiǎn)單,一鍵切換
- 支持廣泛的版本范圍
- 自動(dòng)檢測(cè)已安裝版本
- 無(wú)需頻繁修改腳本
- 提供詳細(xì)的使用反饋
對(duì)于Java開(kāi)發(fā)者來(lái)說(shuō),這個(gè)工具可以:
- 提高開(kāi)發(fā)效率
- 減少環(huán)境配置錯(cuò)誤
- 方便測(cè)試不同JDK版本
- 簡(jiǎn)化多項(xiàng)目開(kāi)發(fā)流程
到此這篇關(guān)于Windows系統(tǒng)下JDK版本一鍵、自動(dòng)切換工具的文章就介紹到這了,更多相關(guān)JDK版本一鍵自動(dòng)切換工具內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
eclipse創(chuàng)建springboot項(xiàng)目的三種方式總結(jié)
這篇文章主要介紹了eclipse創(chuàng)建springboot項(xiàng)目的三種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
SpringBoot之@Controller和@RequestMapping的實(shí)現(xiàn)原理解讀
這篇文章主要介紹了SpringBoot之@Controller和@RequestMapping的實(shí)現(xiàn)原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
MybatisPlus插件自動(dòng)維護(hù)更新和創(chuàng)建時(shí)間方式
這篇文章主要介紹了MybatisPlus插件自動(dòng)維護(hù)更新和創(chuàng)建時(shí)間方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
Mapstruct對(duì)象插入數(shù)據(jù)庫(kù)某個(gè)字段總是為空的bug詳解

