Windows系統(tǒng)下JDK版本一鍵、自動切換工具圖文教程
一、背景介紹
作為Java開發(fā)者,我們經(jīng)常需要在不同的JDK版本之間切換,比如:
- 維護(hù)基于JDK8的老項目
- 開發(fā)使用JDK17的Spring Boot 3.x項目
- 嘗試JDK21的新特性
- 測試不同JDK版本的性能差異
手動切換JDK版本需要修改系統(tǒng)環(huán)境變量,過程繁瑣且容易出錯。為了提高開發(fā)效率,我們可以開發(fā)一個一鍵切換工具。
以下是完整的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)建臨時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. :: 動態(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%" :: 顯示進(jìn)度 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版本
- 無需手動維護(hù)版本列表
- 命令別名設(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)建桌面快捷方式
雙擊運(yùn)行
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%
五、擴(kuò)展功能
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淺析Java的Hibernate框架中的緩存和延遲加載機(jī)制
這篇文章主要介紹了Java的Hibernate框架中的緩存和延遲加載機(jī)制,Hibernate是注明的Java下SSH三大web開發(fā)框架之一,需要的朋友可以參考下2015-11-11springboot開發(fā)flowable定時任務(wù)問題
這篇文章主要介紹了springboot開發(fā)flowable定時任務(wù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11Java利用FTPClient實現(xiàn)文件上傳和下載的實踐指南
本文介紹如何使用Java中的FTPClient庫來執(zhí)行文件的上傳和下載操作,首先,講解了FTPClient的基本用法,包括連接FTP服務(wù)器和登錄驗證,然后,詳細(xì)說明了如何使用 storeFile() 和 retrieveFile() 方法分別實現(xiàn)文件上傳和下載,需要的朋友可以參考下2025-05-05SpringBoot中GlobalExceptionHandler異常處理機(jī)制詳細(xì)說明
Spring Boot的GlobalExceptionHandler是一個全局異常處理器,用于捕獲和處理應(yīng)用程序中發(fā)生的所有異常,這篇文章主要給大家介紹了關(guān)于Java中GlobalExceptionHandler異常處理機(jī)制的相關(guān)資料,需要的朋友可以參考下2024-03-03servlet實現(xiàn)簡單的權(quán)限管理和敏感詞過濾功能
JavaEE課要求用servlet和過濾器實現(xiàn)權(quán)限管理和敏感詞過濾功能,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05SpringBoot+Vue實現(xiàn)動態(tài)菜單的思路梳理
這篇文章主要為大家詳細(xì)介紹了利用SpringBoot+Vue實現(xiàn)動態(tài)菜單的思路梳理,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動手嘗試一下2022-07-07Java重寫(Override)與重載(Overload)區(qū)別原理解析
這篇文章主要介紹了Java重寫(Override)與重載(Overload)區(qū)別原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-02-02