Windows系統(tǒng)下JDK版本一鍵、自動切換工具圖文教程
一、背景介紹
作為Java開發(fā)者,我們經(jīng)常需要在不同的JDK版本之間切換,比如:
- 維護基于JDK8的老項目
- 開發(fā)使用JDK17的Spring Boot 3.x項目
- 嘗試JDK21的新特性
- 測試不同JDK版本的性能差異
手動切換JDK版本需要修改系統(tǒng)環(huán)境變量,過程繁瑣且容易出錯。為了提高開發(fā)效率,我們可以開發(fā)一個一鍵切換工具。
以下是完整的jdk切換腳本,安裝好jdk,并配置JAVA_HOME后運行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)建臨時VBS腳本
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
:: 修改為在當(dāng)前窗口運行,并且先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.
:: 動態(tài)生成8-100的版本號列表
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
)
:: 如果沒有參數(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 未檢測到已安裝的JDK
echo 請先設(shè)置環(huán)境變量,格式為: jdk^<版本號^>
echo 例如: jdk8, jdk11, jdk17, jdk21 等
)
echo ----------------------------------------
echo 當(dāng)前JAVA_HOME: %JAVA_HOME%
echo 當(dāng)前Java版本:
java -version
echo ----------------------------------------
echo.
echo 使用方法:直接輸入版本號即可切換
echo 例如: 8 ^(切換到JDK8^)
echo 17 ^(切換到JDK17^)
echo ========================================
echo.
cmd /k
exit /b 0
)
:: 清除之前可能存在的變量
set "version="
set "jdkEnvName="
:: 清理版本號中的非數(shù)字字符
set "version=%~1"
set "version=%version:jdk=%"
set "version=%version:java=%"
set "version=%version: =%"
:: 驗證版本號是否在支持范圍內(nèi)
set "is_supported="
for %%v in (%SUPPORTED_VERSIONS%) do (
if "%%v"=="%version%" set "is_supported=1"
)
if not defined is_supported (
echo 錯誤: 不支持的JDK版本 %version%
echo 支持的版本范圍: 8-100
pause
exit /b 1
)
:: 設(shè)置對應(yīng)的環(huán)境變量名
set "jdkEnvName=jdk%version%"
:: 驗證目標(biāo)JDK環(huán)境變量是否存在
if not defined %jdkEnvName% (
echo 錯誤: 找不到 %jdkEnvName% 環(huán)境變量,請確保已正確設(shè)置!
echo 請檢查系統(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 您可以通過以下步驟設(shè)置新的JDK版本:
echo 1. 右鍵"此電腦" -^> "屬性" -^> "高級系統(tǒng)設(shè)置" -^> "環(huán)境變量"
echo 2. 在"系統(tǒng)變量"中添加 %jdkEnvName% 變量
echo 3. 將值設(shè)置為對應(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án)境變量
set "JAVA_HOME=!%jdkEnvName%!"
set "PATH=%JAVA_HOME%\bin;%PATH%"
:: 顯示進度
echo 環(huán)境變量已更新,正在驗證...
echo.
:: 等待環(huán)境變量更新
timeout /t 2 /nobreak >nul
:: 驗證Java版本
echo 當(dāng)前Java版本:
echo -------------
java -version
if %errorLevel% neq 0 (
echo Java命令執(zhí)行失敗,請檢查環(huán)境變量設(shè)置!
pause
exit /b 1
)
echo.
echo -------------
echo JAVA_HOME 已更新為: %JAVA_HOME%
echo JDK切換完成!
echo.
:: 保持窗口打開并停留在指定目錄
cmd /k cd /d C:\Users\lk\Desktop
二、環(huán)境變量配置說明
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 配置說明
- 使用%jdkXX%形式的變量引用,便于動態(tài)切換
- JAVA_HOME使用引用形式,只需修改引用值即可切換版本
- Path中使用%JAVA_HOME%確保始終使用當(dāng)前選擇的JDK
三、切換工具實現(xiàn)
3.1 核心功能實現(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. 動態(tài)版本支持
setlocal EnableDelayedExpansion set “SUPPORTED_VERSIONS=” for /l %%i in (8,1,100) do ( set “SUPPORTED_VERSIONS=!SUPPORTED_VERSIONS! %%i” )
:: 3. 版本檢測與別名設(shè)置
for %%v in (%SUPPORTED_VERSIONS%) do ( if defined jdk%%v ( set “INSTALLED_VERSIONS=!INSTALLED_VERSIONS! %%v” ) doskey %%v=call “%~f0” %%v )
3.2 核心功能說明
- 管理員權(quán)限獲取
- 使用UAC提權(quán)確保能修改系統(tǒng)環(huán)境變量
- 保持在當(dāng)前窗口執(zhí)行,提供更好的用戶體驗
- 動態(tài)版本支持
- 支持JDK 8-100的所有版本
- 自動檢測系統(tǒng)中已安裝的JDK版本
- 無需手動維護版本列表
- 命令別名設(shè)置
- 使用doskey設(shè)置簡化命令
- 支持直接使用版本號切換(如:8、17)
3.3 版本切換實現(xiàn)
:: 版本驗證和切換 set “jdkEnvName=jdk%version%” if not defined %jdkEnvName% ( echo 錯誤: 找不到 %jdkEnvName% 環(huán)境變量 exit /b 1 )
:: 更新JAVA_HOME
setx JAVA_HOME “%%%jdkEnvName%%%” /M
set “JAVA_HOME=!%jdkEnvName%!”
set “PATH=%JAVA_HOME%\bin;%PATH%”
四、使用說明
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)建桌面快捷方式
雙擊運行
C:\Tools\JDKSwitch\switch-jdk.bat
4.2 使用方法
查看可用版本
switch-jdk.bat
切換JDK版本
# 方式1:直接使用版本號 8 # 切換到JDK8 17 # 切換到JDK17 # 方式2:使用完整命令 switch-jdk.bat 8 # 切換到JDK8 switch-jdk.bat 17 # 切換到JDK17
4.3 驗證切換結(jié)果
# 查看Java版本 java -version # 查看JAVA_HOME echo %JAVA_HOME%
五、擴展功能
5.1 添加新JDK版本
- 安裝新版本JDK
- 添加環(huán)境變量:jdkXX=安裝路徑
- 無需修改腳本,自動支持新版本
5.2 錯誤處理
- 版本號驗證
- 環(huán)境變量檢查
- 詳細(xì)的錯誤提示
- Java命令驗證
六、最佳實踐
- 環(huán)境變量設(shè)置規(guī)范
- 使用統(tǒng)一的命名規(guī)則(jdk + 版本號)
- 路徑中避免空格和特殊字符
- 使用絕對路徑
- 使用建議
- 創(chuàng)建桌面快捷方式
- 將腳本目錄添加到Path
- 定期清理無用的JDK版本
- 注意事項
- 首次使用需要管理員權(quán)限
- 某些IDE可能需要重啟
- 注意環(huán)境變量沖突
七、總結(jié)
這個JDK版本切換工具具有以下優(yōu)勢:
- 使用簡單,一鍵切換
- 支持廣泛的版本范圍
- 自動檢測已安裝版本
- 無需頻繁修改腳本
- 提供詳細(xì)的使用反饋
對于Java開發(fā)者來說,這個工具可以:
- 提高開發(fā)效率
- 減少環(huán)境配置錯誤
- 方便測試不同JDK版本
- 簡化多項目開發(fā)流程
到此這篇關(guān)于Windows系統(tǒng)下JDK版本一鍵、自動切換工具的文章就介紹到這了,更多相關(guān)JDK版本一鍵自動切換工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot mybais配置多數(shù)據(jù)源過程解析
這篇文章主要介紹了Springboot+mybais配置多數(shù)據(jù)源過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03
springboot開發(fā)flowable定時任務(wù)問題
這篇文章主要介紹了springboot開發(fā)flowable定時任務(wù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
Java利用FTPClient實現(xiàn)文件上傳和下載的實踐指南
本文介紹如何使用Java中的FTPClient庫來執(zhí)行文件的上傳和下載操作,首先,講解了FTPClient的基本用法,包括連接FTP服務(wù)器和登錄驗證,然后,詳細(xì)說明了如何使用 storeFile() 和 retrieveFile() 方法分別實現(xiàn)文件上傳和下載,需要的朋友可以參考下2025-05-05
SpringBoot中GlobalExceptionHandler異常處理機制詳細(xì)說明
Spring Boot的GlobalExceptionHandler是一個全局異常處理器,用于捕獲和處理應(yīng)用程序中發(fā)生的所有異常,這篇文章主要給大家介紹了關(guān)于Java中GlobalExceptionHandler異常處理機制的相關(guān)資料,需要的朋友可以參考下2024-03-03
servlet實現(xiàn)簡單的權(quán)限管理和敏感詞過濾功能
JavaEE課要求用servlet和過濾器實現(xiàn)權(quán)限管理和敏感詞過濾功能,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
SpringBoot+Vue實現(xiàn)動態(tài)菜單的思路梳理
這篇文章主要為大家詳細(xì)介紹了利用SpringBoot+Vue實現(xiàn)動態(tài)菜單的思路梳理,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動手嘗試一下2022-07-07
Java重寫(Override)與重載(Overload)區(qū)別原理解析
這篇文章主要介紹了Java重寫(Override)與重載(Overload)區(qū)別原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-02-02

