在 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 版本的一键切换,大幅提升开发效率。

Read more

Git 远程操作全攻略:从基础到实战

Git 远程操作全攻略:从基础到实战

🌈 个人主页:Zfox_ 🔥 系列专栏:Git 企业级应用 目录 * 一:🔥 理解分布式版本控制系统 * 二:🔥 远程仓库 * 🦋 新建远程仓库 * 🦋 克隆远程仓库 * 🦋 向远程仓库推送 * 🦋 拉取远程仓库 * 三:🔥 配置Git * 🦋 忽略特殊⽂件 * 🦋 给命令配置别名 * 四:🔥 标签管理 * 🦋 理解标签 * 🦋 创建标签 * 🦋 操作标签 * 五:🔥 多⼈协作 * 🦋 多⼈协作⼀ * 🦋 多⼈协作⼆ * 🎀 远程分⽀删除后,本地gitbranch-a依然能看到的解决办法 * 六:🔥 共勉 一:🔥 理解分布式版本控制系统 🦈 我们⽬前所说的所有内容(⼯作区,暂存区,版本库 等等),都是在本地!也就是在你的笔记本或者计算机上。⽽我们的Git其实是分布式版本控制系统!什么意思呢? 可以简单理解为,我们每个⼈

By Ne0inhk

开源又实用!CAM++系统为何值得你立刻尝试

开源又实用!CAM++系统为何值得你立刻尝试 1. 这不是另一个语音识别工具,而是一个真正能落地的说话人验证方案 你有没有遇到过这样的场景:需要确认一段录音是不是某位同事说的?想快速判断客服通话中两个声音是否来自同一人?或者在安防系统里,需要从一段监控音频中验证说话人身份?市面上很多语音识别工具只告诉你“说了什么”,但CAM++解决的是更关键的问题——“谁说的”。 CAM++不是语音转文字(ASR),也不是语音合成(TTS),它专注一个被长期低估却极其重要的能力:说话人验证(Speaker Verification)。简单说,它不关心内容,只认声音本身。就像指纹或虹膜识别一样,它把人的声纹变成一串可计算、可比对的数字特征。 更难得的是,这个系统完全开源、开箱即用、中文优化、部署极简。不需要GPU服务器,一台普通开发机就能跑;不需要写代码,点点鼠标就能完成专业级声纹分析;不需要调参经验,预设阈值开箱即准。它不像学术模型那样只停留在论文里,也不像商业API那样藏着高昂费用和隐私风险——它就安静地运行在你的本地机器上,数据不出门,结果自己掌控。 如果你正在寻找一个真正能放进工作流

By Ne0inhk
【工创赛2025-智能物流搬运塔吊方案开源(2分15秒)】西安理工大学工程训练中心

【工创赛2025-智能物流搬运塔吊方案开源(2分15秒)】西安理工大学工程训练中心

一、前言        时光荏苒,岁月如梭。三年的本科竞赛生涯随着工训赛的结束告一段落。竞赛路途中,受到了诸多大佬的帮助和鼓励。为了将这份开源精神传递下去,本团队全体成员一致决定无偿开源本项目机械设计图纸、PCB设计、电控代码、视觉代码及镜像文件、参赛文档以及其他有关设计资料。        请注意,本项目开源文件完全免费,内容遵循CC 4.0 BY-NC-SA版权协议,转载请给出适当的署名,不可用作商业用途,严禁倒卖,若广大网友发现以上行为,请第一时间与我取得联系。        在此,由衷感谢西安理工大学工程训练中心的各位老师对我们竞赛项目的悉心指导与鼎力支持。         这里放一张二代小车同堂的照片作为纪念 二、关于开源项目        运行视频:[开源]2025工训赛智能物流搬运,初赛第八,2分26秒_哔哩哔哩_bilibili        本项目参与了2025年中国大学生工程实践与创新能力大赛全国总决赛,初赛成绩仅1个二环,其余均为一环,总时间2分26秒。决赛由于准备不足以及现场不可预料的因素,成绩不算理想,最后总成绩为全国特等奖。

By Ne0inhk