在Windows上实现多JDK快速切换的高效方法

 更新时间:2026年01月19日 10:29:15   作者:台灯没得电辽  
在现代软件开发过程中,Java作为一种广泛应用的编程语言,其不同版本之间的兼容性和功能差异使得开发者经常需要在多个JDK版本之间进行切换,这篇文章主要介绍了在Windows上实现多JDK快速切换的高效方法,需要的朋友可以参考下

前言

在 Windows 系统中管理多个 JDK 版本时,手动修改环境变量效率较低。本文介绍一种通过 .bat批处理脚本结合 JAVA_HOME 变量联动机制实现一键切换 JDK 的高效方法。觉得文章冗余,不利于快速解决问题,可将本文提供给AI总结处理,快速且高效

该方案的核心思想是:利用系统环境变量 %JAVA_HOME% 的动态指向,配合批处理脚本自动修改其值,从而快速切换不同版本的 JDK

第一步:调整环境变量顺序(关键)

为了确保 %JAVA_HOME% 能正确生效并被优先识别,必须将其路径设置为环境变量中的第一个条目。

操作步骤:

  1. 打开“环境变量编辑窗口”(可通过“此电脑 → 属性 → 高级系统设置 → 环境变量”进入)。
  2. 在“系统变量”区域找到 Path 变量,点击“编辑”。
  3. 在变量值列表中,选中包含 %JAVA_HOME%\bin 的那一行。
  4. 点击右侧的“上移 ”按钮,将它移动到第一行(建议超过 Oracle 和 VMware 的路径)。
  5. 点击“确定”保存更改。

注意:确保 %JAVA_HOME%\binPath 中最靠前的一项,否则可能无法生效。

第二步:配置版本环境变量

为了方便切换,建议预先定义两个专用的环境变量,分别对应不同的 JDK 版本。变量值这里以我本人为例,具体需根据实际修改。

创建以下系统变量:

  • 变量名JAVA_HOME8
    变量值C:\Program Files\Java\jdk1.8.0_112

  • 变量名JAVA_HOME21
    变量值D:\Program Files\Java\jdk-21

修改原有JAVA_HOME变量:

  • 将原 JAVA_HOME 的值改为:%JAVA_HOME8%(作为默认启动版本)
  • 注意:变量名中不要带 .bin 后缀!

💡 建议:后续使用脚本时,仅需修改 JAVA_HOME 指向对应的版本变量即可,无需重复配置完整路径。

第三步:编写一键切换脚本

为了实现“快速切换”,我们创建两个 .bat 批处理文件,分别用于切换到 JDK 8 和 JDK 21。由于执行脚本每次需要右键选择管理员权限执行,所以添加了提权命令,实际只需要两三行代码。

1. 创建jdk8.bat—— 切换至 JDK 8

操作步骤:

  1. 在桌面或任意文件夹中新建一个文本文档。
  2. 复制下方代码粘贴进去。
  3. 保存文件并重命名为 jdk8.bat
@echo off
:: ========================================================
:: 自动获取管理员权限
:: ========================================================
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if "%errorlevel%" NEQ "0" (
    echo 正在请求管理员权限...
    goto UACPrompt
) else ( goto gotAdmin )
 
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
 
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%~dp0"
cd /d "%~dp0"
 
:: ========================================================
:: 执行 JDK 切换逻辑
:: ========================================================
echo -------------------------------
echo 正在切换系统环境变量 JAVA_HOME 为 JDK 8
echo -------------------------------
 
:: 使用 setx 修改系统级环境变量(/M 表示系统级别)
:: 注意:假设你已定义名为 JAVA_HOME8 的变量
setx JAVA_HOME "%JAVA_HOME8%" /M
 
echo.
if %errorlevel% EQU 0 (
    echo [成功] 已成功切换到 JDK 8。
) else (
    echo [失败] 请检查是否已定义环境变量 JAVA_HOME8。
)
 
echo.
echo 注意:更改已生效,但当前窗口不会更新,请重新打开命令行窗口。
pause

2. 创建jdk21.bat—— 切换至 JDK 21

操作步骤:

  1. 同样新建一个文本文件。
  2. 粘贴以下代码。
  3. 保存为 jdk21.bat
@echo off
:: ========================================================
:: 1. 自动获取管理员权限
:: ========================================================
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if "%errorlevel%" NEQ "0" (
    echo 正在请求管理员权限...
    goto UACPrompt
) else ( goto gotAdmin )
 
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
 
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%~dp0"
cd /d "%~dp0"
 
:: ========================================================
:: 2. 执行 JDK 21 切换逻辑
:: ========================================================
echo -------------------------------
echo 正在切换系统环境变量 JAVA_HOME 为 JDK 21
echo -------------------------------
 
:: 修改系统级环境变量
setx JAVA_HOME "%JAVA_HOME21%" /M
 
echo.
if %errorlevel% EQU 0 (
    echo [成功] 已成功切换到 JDK 21。
) else (
    echo [错误] 切换失败!请确保你已经手动创建了名为 JAVA_HOME21 的变量。
)
 
echo.
echo 注意:配置已完成。请关闭所有已打开的终端(CMD/PowerShell/IDE),
echo 然后重新打开以使环境变量生效。
echo.
pause

使用说明

  1. 运行脚本

    • 双击 jdk8.batjdk21.bat 即可执行切换。
    • 系统会自动请求管理员权限(必要时弹出 UAC 提示)。
  2. 生效范围

    • 修改的是系统级环境变量,全局生效。
    • 当前命令行窗口不会立即反映变更,需重启终端才能加载新配置。
  3. 验证方式

    • 打开新的 CMD 或 PowerShell,输入:
      echo %JAVA_HOME%
      java -version
      
    • 查看输出是否符合预期。

注意事项

  • ✅ 确保 JAVA_HOME8JAVA_HOME21 已正确设置。
  • ✅ 确保 %JAVA_HOME%\binPath 中且位于前列。
  • ⚠️ 每次切换后务必关闭并重新打开开发工具(如 IntelliJ IDEA、Eclipse、VS Code 等)。
  • 🛠 可扩展:同理可添加更多 JDK 版本的切换脚本(如 jdk17.bat、jdk11.bat)。

总结

本方案通过以下方式实现了高效、稳定的多 JDK 切换:

  • 利用 setx 命令修改系统环境变量;
  • 使用批处理脚本自动化流程;
  • 结合管理员权限提升保障写入权限;
  • 配合环境变量联动机制简化维护。

💡 推荐将这两个 .bat 文件放在固定目录(如 D:\JDK\Switcher),方便日常调用。

✅ 完成以上步骤后,即可轻松实现 JDK 版本的一键切换,大幅提升开发效率。

到此这篇关于在Windows上实现多JDK快速切换的高效方法的文章就介绍到这了,更多相关Windows上多JDK快速切换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 三道java新手入门面试题,通往自由的道路--锁+Volatile

    三道java新手入门面试题,通往自由的道路--锁+Volatile

    这篇文章主要为大家分享了最有价值的3道多线程面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,对hashCode方法的设计、垃圾收集的堆和代进行剖析,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Java ShardingJDBC实战演练

    Java ShardingJDBC实战演练

    Sharding-JDBC 采用在 JDBC 协议层扩展分库分表,是一个以 jar 形式提供服务的轻量级组件,其核心思路是小而美地完成最核心的事情
    2021-11-11
  • Java实力弹弹球实现代码

    Java实力弹弹球实现代码

    这篇文章主要为大家详细介绍了Java实力弹弹球实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • 在netty中使用native传输协议的方法

    在netty中使用native传输协议的方法

    这篇文章主要介绍了在netty中使用native传输协议,这里我们只以Kqueue为例介绍了netty中native传输协议的使用,需要的朋友可以参考下
    2022-05-05
  • java并发编程中的SynchronousQueue实现原理解析

    java并发编程中的SynchronousQueue实现原理解析

    这篇文章主要介绍了java并发编程中的SynchronousQueue实现原理解析,SynchronousQueue是一个比较特别的队列,此队列源码中充斥着大量的CAS语句,理解起来是有些难度的,为了方便日后回顾,本篇文章会以简洁的图形化方式展示该队列底层的实现原理,需要的朋友可以参考下
    2023-12-12
  • IntelliJ IDEA 2024.2 发布新功能介绍Spring Data JPA即时查询、自动补全cron表达式

    IntelliJ IDEA 2024.2 发布新功能介绍Spring Data JPA即时查询、自动补全cro

    在2024.2 Ultimate版本中,对 Spring Data JPA 的支持做了增强,新功能允许您在不运行应用程序和分析日志文件的情况下查看方法将生成的查询,下面就来一起看看这个版本中推出的几个强大新特性
    2024-08-08
  • Springboot详解RocketMQ实现消息发送与接收流程

    Springboot详解RocketMQ实现消息发送与接收流程

    这篇文章主要介绍了SpringBoot整合RocketMQ实现消息发送和接收功能,我们使用主流的SpringBoot框架整合RocketMQ来讲解,使用方便快捷,本文分步骤给大家介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Spring Boot启动加载流程自动配置的底层原理(专家解读)

    Spring Boot启动加载流程自动配置的底层原理(专家解读)

    Spring Boot这么少的配置却能实现如此丰富的功能?为何启动一个Spring Boot应用可以变得如此简单便捷?在这个看似平凡的启动过程中,其实隐藏着一套精妙的自动化机制和源码逻辑,本文将带你深入探索 Spring Boot 的启动流程,逐步揭开自动配置的幕后奥秘
    2026-01-01
  • Java设计模式之观察者模式observer pattern详解

    Java设计模式之观察者模式observer pattern详解

    这篇文章主要介绍了Java设计模式之观察者模式observer pattern详解,当一个对象发生数据变化时,通知其他相关的一系列对象,接受到通知的对象根据该对象的变化进行相应处理以响应变化的过程,需要的朋友可以参考下
    2023-12-12
  • idea中的lombok不生效的四种解决方法

    idea中的lombok不生效的四种解决方法

    Lombok项目是一个java库,它可以自动插入到编辑器和构建工具中,本文将详细给大家介绍idea中的lombok不生效的四种解决方法,需要的朋友可以参考下
    2023-05-05

最新评论