java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > JDK版本一键自动切换工具

Windows系统下JDK版本一键、自动切换工具图文教程

作者:lilili147369

这篇文章主要介绍了Windows系统下JDK版本一键、自动切换工具的相关资料,通过批处理脚本动态管理环境变量,支持JDK8-100版本,简化多项目开发,提升效率并减少配置错误,需要的朋友可以参考下

一、背景介绍

作为Java开发者,我们经常需要在不同的JDK版本之间切换,比如:

手动切换JDK版本需要修改系统环境变量,过程繁琐且容易出错。为了提高开发效率,我们可以开发一个一键切换工具。
以下是完整的jdk切换脚本,安装好jdk,并配置JAVA_HOME后运行switch-jdk.bat

注意:修改脚本中的C:\Users\lk\Desktop为你自己的用户桌面的路径

@echo off
:: 获取管理员权限但在当前窗口执行
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
    :: 创建临时VBS脚本
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    :: 修改为在当前窗口运行,并且先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
)

:: 显示当前目录
echo 当前工作目录:
cd
echo.

:: 动态生成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"
    )
)

:: 设置所有版本的命令别名
for %%v in (%SUPPORTED_VERSIONS%) do (
    doskey %%v=call "%~f0" %%v
)

:: 如果没有参数,显示欢迎信息
if "%~1"=="" (
    echo JDK切换工具已准备就绪!
    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   请先设置环境变量,格式为: jdk^<版本号^>
        echo   例如: jdk8, jdk11, jdk17, jdk21 等
    )
    echo ----------------------------------------
    echo 当前JAVA_HOME: %JAVA_HOME%
    echo 当前Java版本:
    java -version
    echo ----------------------------------------
    echo.
    echo 使用方法:直接输入版本号即可切换
    echo 例如: 8 ^(切换到JDK8^)
    echo       17 ^(切换到JDK17^)
    echo ========================================
    echo.
    cmd /k
    exit /b 0
)

:: 清除之前可能存在的变量
set "version="
set "jdkEnvName="

:: 清理版本号中的非数字字符
set "version=%~1"
set "version=%version:jdk=%"
set "version=%version:java=%"
set "version=%version: =%"

:: 验证版本号是否在支持范围内
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
)

:: 设置对应的环境变量名
set "jdkEnvName=jdk%version%"

:: 验证目标JDK环境变量是否存在
if not defined %jdkEnvName% (
    echo 错误: 找不到 %jdkEnvName% 环境变量,请确保已正确设置!
    echo 请检查系统环境变量中是否存在 %jdkEnvName% 变量。
    echo.
    echo 已安装的JDK版本:
    for %%v in (%SUPPORTED_VERSIONS%) do (
        if defined jdk%%v (
            set "jdkPath=!jdk%%v!"
            echo   %%v  - !jdkPath!
        )
    )
    echo.
    echo 您可以通过以下步骤设置新的JDK版本:
    echo 1. 右键"此电脑" -^> "属性" -^> "高级系统设置" -^> "环境变量"
    echo 2. 在"系统变量"中添加 %jdkEnvName% 变量
    echo 3. 将值设置为对应JDK的安装路径(如:C:\Program Files\Java\jdk-%version%)
    pause
    exit /b 1
)

:: 显示当前状态
echo 当前JAVA_HOME: %JAVA_HOME%
echo 准备切换到: !%jdkEnvName%!

:: 更新JAVA_HOME
echo.
echo 正在切换到 %jdkEnvName% ...
setx JAVA_HOME "%%%jdkEnvName%%%" /M
if %errorLevel% neq 0 (
    echo 更新JAVA_HOME失败!
    pause
    exit /b 1
)

:: 刷新当前会话的环境变量
set "JAVA_HOME=!%jdkEnvName%!"
set "PATH=%JAVA_HOME%\bin;%PATH%"

:: 显示进度
echo 环境变量已更新,正在验证...
echo.

:: 等待环境变量更新
timeout /t 2 /nobreak >nul

:: 验证Java版本
echo 当前Java版本:
echo -------------
java -version
if %errorLevel% neq 0 (
    echo Java命令执行失败,请检查环境变量设置!
    pause
    exit /b 1
)

echo.
echo -------------
echo JAVA_HOME 已更新为: %JAVA_HOME%
echo JDK切换完成!
echo.

:: 保持窗口打开并停留在指定目录
cmd /k cd /d C:\Users\lk\Desktop

二、环境变量配置说明

2.1 基础环境变量配置

# CLASSPATH配置

.;%JAVA_HOME%\lib;

# JAVA_HOME配置(当前使用的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 配置说明

三、切换工具实现

3.1 核心功能实现

@echo off
:: switch-jdk.bat

:: 1. 管理员权限获取

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. 动态版本支持

setlocal EnableDelayedExpansion
set “SUPPORTED_VERSIONS=”
for /l %%i in (8,1,100) do (
set “SUPPORTED_VERSIONS=!SUPPORTED_VERSIONS! %%i”
)

:: 3. 版本检测与别名设置

for %%v in (%SUPPORTED_VERSIONS%) do (
if defined jdk%%v (
set “INSTALLED_VERSIONS=!INSTALLED_VERSIONS! %%v”
)
doskey %%v=call “%~f0” %%v
)

3.2 核心功能说明

3.3 版本切换实现

:: 版本验证和切换
set “jdkEnvName=jdk%version%”
if not defined %jdkEnvName% (
echo 错误: 找不到 %jdkEnvName% 环境变量
exit /b 1
)

:: 更新JAVA_HOME
setx JAVA_HOME “%%%jdkEnvName%%%” /M
set “JAVA_HOME=!%jdkEnvName%!”
set “PATH=%JAVA_HOME%\bin;%PATH%”

四、使用说明

4.1 安装步骤

4.2 使用方法

4.3 验证切换结果

# 查看Java版本
java -version
# 查看JAVA_HOME
echo %JAVA_HOME%

五、扩展功能

5.1 添加新JDK版本

5.2 错误处理

六、最佳实践

七、总结

这个JDK版本切换工具具有以下优势:

对于Java开发者来说,这个工具可以:

到此这篇关于Windows系统下JDK版本一键、自动切换工具的文章就介绍到这了,更多相关JDK版本一键自动切换工具内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文