Windows 下多个 JDK 版本的快速切换方案

——基于软链接(Symlink)+ Git Bash 的工程化实践

适用场景
在日常开发中,往往同时维护多个项目:

  • 老项目仍停留在 JDK 8

  • 新项目已升级到 JDK 17 / 21 / 25

而 Windows 系统层面,JAVA_HOME 只能指向一个 JDK,频繁手动切换不仅低效,也极易引发环境混乱。

本文以 Windows 11 为例,在已安装 JDK 1.8 / 17 / 21 / 25 的前提下,构建一套:

一次配置,终身一键切换 的 JDK 管理方案。


一、核心设计思想

1.1 问题本质

  • JAVA_HOME 只能配置一次

  • IDE / Maven / Gradle / 命令行高度依赖 JAVA_HOME

  • 频繁修改环境变量 = 高风险 + 低效率

1.2 解决方案抽象

不切换环境变量,而是切换环境变量“指向的目标”

核心思路:

  • 固定 JAVA_HOME

  • JAVA_HOME 指向一个 “虚拟入口目录”

  • 该入口通过 软链接 动态指向不同版本的 JDK

1.3 结构示意

JAVA_HOME
   │
   ▼
D:\jdk\default   (软链接,动态变化)
   │
   ├──► D:\jdk\jdk1.8.0_471
   ├──► D:\jdk\jdk-17.0.17
   ├──► D:\jdk\jdk-21.0.9
   └──► D:\jdk\jdk-25.0.1

结论

  • JAVA_HOME 永远不变

  • 只需要“切换软链接指向”即可完成 JDK 切换


二、准备工作

2.1 安装 Git Bash

Git Bash 提供类 Linux / Unix 的命令行能力,是本方案执行脚本的基础环境。

  • 官网地址:https://git-scm.com/

  • 关键组件:安装时确保勾选 “Git Bash Here”“Use Git from Git Bash only”(避免与 Windows CMD 产生路径冲突)。

  • 安装完成后,确保可以正常打开 Git Bash


2.2 规范 JDK 目录结构

建议在 非系统盘(如 D 盘) 统一管理 JDK:

D:\jdk

目录规划说明:

  • 版本目录:每个 JDK 一个独立目录

  • 虚拟入口default 用作软链接入口

⚠️ 注意

  • 如果你之前手动创建过 D:\jdk\default 文件夹,请先删除

  • 该目录将由脚本自动创建为 软链接


2.3 系统环境变量配置

路径Win + I → 系统 → 高级系统设置 → 环境变量

变量名 变量值 类型
JAVA_HOME D:\jdk\default 用户/系统变量
CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 系统变量
Path 追加 %JAVA_HOME%\bin 系统变量(置顶)

⚠️ 重要

JAVA_HOME 必须指向 default 目录,而非具体版本目录。

CLASSPATH(兼容 JDK 8,JDK 9+ 实际已不再依赖)

%JAVA_HOME%\bin 添加到 Path 列表,并上移至第一行(防止系统自带路径干扰)。


三、JDK 安装说明

下载渠道

类型 推荐源 说明
官方归档 Oracle JDK Archive 需 Oracle 账号,版本最全
国内镜像 INJDK 导航站 免登录,速度快,含多厂商发行版

安装要求

强烈建议使用压缩包版(zip)而非安装程序(exe)

  1. 下载对应版本的 .zip 压缩包

  2. 解压至 D:\jdk\ 目录

形成如下目录结构:

D:\jdk\jdk1.8.0_471
D:\jdk\jdk-17.0.17
D:\jdk\jdk-21.0.9
D:\jdk\jdk-25.0.1

四、配置 JDK 快捷切换命令

4.1 为什么选择 Git Bash + alias

  • Windows 原生 CMD 功能有限

  • Git Bash 提供:

    • ln -s(软链接)

    • alias(命令封装)

    • 类 Linux 脚本体验

非常适合做 “工程级环境切换”


4.2 编辑 .bashrc

.bashrc 位于当前用户主目录,用于定义终端启动时加载的命令与别名。

例如 windows 账号为 vincent,则这个在 C:/Users/vincent/.bashrc

操作步骤:

cd ~ 
vi .bashrc

或:

notepad .bashrc

4.3 alias 配置

# 允许 Git Bash 创建原生 Windows 软链接
export MSYS="winsymlinks:nativestrict"
# 默认软链接入口
export JDK_DEFAULT="/d/jdk/default"

# JDK 路径
export JDK8_PATH="/d/jdk/jdk1.8.0_471"
export JDK17_PATH="/d/jdk/jdk-17.0.17"
export JDK21_PATH="/d/jdk/jdk-21.0.9"
export JDK25_PATH="/d/jdk/jdk-25.0.1"

# 切换命令封装(在Git Bash执行)
alias jdk8="rm $JDK_DEFAULT && ln -s $JDK8_PATH $JDK_DEFAULT && java -version"
alias jdk17="rm $JDK_DEFAULT && ln -s $JDK17_PATH $JDK_DEFAULT && java -version"
alias jdk21="rm $JDK_DEFAULT && ln -s $JDK21_PATH $JDK_DEFAULT && java -version"
alias jdk25="rm $JDK_DEFAULT && ln -s $JDK25_PATH $JDK_DEFAULT && java -version"

保存后执行:

source ~/.bashrc

五、开启 Windows 开发者模式

默认情况下,Windows 创建软链接需要管理员权限。

开启 开发者模式 后,可避免每次都“以管理员身份运行”。

操作路径:

  1. Win + I → 打开 设置

  2. 系统 → 开发者选项

  3. 打开 开发者模式(Developer Mode)

开启后,普通权限下的 Git Bash 也可正常执行 ln -s


六、验证与使用

6.1 使用方式

打开 Git Bash,直接输入:

jdk8

java version “1.8.0_471”
Java™ SE Runtime Environment (build 1.8.0_471-b09)
Java HotSpot™ 64-Bit Server VM (build 25.471-b09, mixed mode)

jdk17

java version “17.0.17” 2025-10-21 LTS
Java™ SE Runtime Environment (build 17.0.17+8-LTS-360)
Java HotSpot™ 64-Bit Server VM (build 17.0.17+8-LTS-360, mixed mode, sharing)

jdk21

java version “21.0.9” 2025-10-21 LTS
Java™ SE Runtime Environment (build 21.0.9+7-LTS-338)
Java HotSpot™ 64-Bit Server VM (build 21.0.9+7-LTS-338, mixed mode, sharing)

jdk25

java version “25.0.1” 2025-10-21 LTS
Java™ SE Runtime Environment (build 25.0.1+8-LTS-27)
Java HotSpot™ 64-Bit Server VM (build 25.0.1+8-LTS-27, mixed mode, sharing)

七、引用Reference

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐