当前位置: 首页 > news >正文

Windows JDK 多版本管理方案

Windows JDK 多版本管理方案

  • Windows JDK 多版本管理方案
    • 前言
    • 方案一:纯手动配置(原生环境变量切换)
      • 1. 配置三个 `JAVA_HOME`
      • 2. 配置 `Path` 变量
      • 3. 清理干扰路径(关键一步)
    • 方案二:使用 venv 工具(vng/jEnv / SDKMAN)
      • 推荐工具:`vng` (原 `jenv-for-windows`)
      • 现代选择:`SDKMAN!`
    • 💡 进阶避坑指南

Windows JDK 多版本管理方案

前言

在Windows系统中管理多个版本的JDK,核心思路是避免让多个JDK的路径同时写死在系统变量中,而是通过修改一个“中转变量”来实现一键切换。

以下是目前最主流、最优雅的两种管理方案:


方案一:纯手动配置(原生环境变量切换)

这是最基础、最透明的方法,不需要安装任何第三方工具。原理是利用 Windows 环境变量的引用机制。

1. 配置三个JAVA_HOME

打开系统环境变量设置(右键“此电脑” -> 属性 -> 高级系统设置 -> 环境变量),在系统变量中新建以下变量:

  • JAVA_HOME_8_291=C:\Program Files\Java\jdk1.8.0_291(你的JDK8u291实际路径)
  • JAVA_HOME_8_491=C:\Program Files\Java\jdk1.8.0_491(你的JDK8u491实际路径)
  • JAVA_HOME_17=C:\Program Files\Java\jdk-17(你的JDK17实际路径)

然后再新建一个总开关变量JAVA_HOME,让它去引用其中一个具体版本:

  • JAVA_HOME=%JAVA_HOME_8_291%(当前想用哪个,就改后面的数字)

2. 配置Path变量

在系统变量中找到Path,点击编辑。
新建一条记录,将其置于最顶端(非常重要,防止被其他软件自带的Java路径覆盖):

  • %JAVA_HOME%\bin

3. 清理干扰路径(关键一步)

很多时候切换失效,是因为某些软件(如 Oracle 或早期的 Java 安装包)在Path中自动添加了路径。检查并删除Path中类似的自带路径:

  • C:\Program Files\Common Files\Oracle\Java\javapath
  • C:\Program Files (x86)\Common Files\Oracle\Java\javapath

如何切换:
以后需要换版本时,只需把JAVA_HOME的值改成%JAVA_HOME_8%%JAVA_HOME_21%,保存后重新打开命令行终端(CMD 或 PowerShell),输入java -version即可完成切换。


方案二:使用 venv 工具(vng/jEnv / SDKMAN)

如果你嫌频繁点开“环境变量”窗口太麻烦,推荐使用专门的 Java 版本管理器,在命令行一行命令搞定。

推荐工具:vng(原jenv-for-windows)

这是一个专门为 Windows 编写的轻量级 Java 版本管理工具。

  1. 安装:下载并安装vng(可以直接在 GitHub 搜索jenv-for-windowsvng)。
    下载链接:JEnv-for-Windows

    解压到任一位置

    添加path环境变量

    验证版本提示因为 Windows 的 PowerShell 安全策略(Execution Policy) 默认比较严格,禁止在系统上运行未经数字签名的脚本文件,执行脚本修改一下 PowerShell 的执行策略即可

    Set-ExecutionPolicy-ExecutionPolicyRemoteSigned-ScopeCurrentUser

    再进入jenv运行以下命令来解除该脚本文件的锁定状态

    Unblock-File-Path"D:\Program Files\JEnv\src\jenv.ps1"

  2. 添加 JDK:

    jenv add 1.8 C:\Program Files\Java\jdk1.8.0_311 jenv add 17 C:\Program Files\Java\jdk-17
  3. 查看已添加的版本:

    jenv list
  4. 一键切换:

    jenv change17

现代选择:SDKMAN!

如果除了 JDK,你还需要管理 Maven、Gradle 等多种开发工具,在 Windows 11 上结合 WSL 或 Git Bash 使用SDKMAN!是极佳的选择。它支持直接在终端在线下载并管理几乎所有发行版的 JDK(如 Temurin, Oracle, Corretto)。


💡 进阶避坑指南

  1. IDE(如 IntelliJ IDEA / VS Code)不受系统全局 JDK 影响
    现在的现代 IDE 极其智能,它们允许你为每个项目单独指定 JDK 版本。即使你系统全局配的是 JDK 17,你在 IDEA 的Project Structure->SDKs中依然可以导入并使用 JDK 8。因此,如果只是为了应用开发,不一定非要折腾系统全局变量,直接在 IDE 里配置更安全。
  2. **构建工具(Maven/Gradle)会读取JAVA_HOME**
    如果你在命令行运行mvn clean package,Maven 会严格使用当前系统PathJAVA_HOME指向的 Java 版本。如果编译报错,记得先用java -version检查一下。

如果你在切换过程中遇到了版本“卡死”不变的情况,可以告诉我,这通常是Path变量的顺序问题。

http://www.gsyq.cn/news/1548863.html

相关文章:

  • go java web开发 Java老手转Go开发:不是SpringBoot不香,是这玩意儿太爽了
  • AWQ+ PagedAttention双剑合璧,开源LLM生产部署性能调优完全指南
  • 9.三个修饰符
  • 2026海口品牌首饰回收门店实力排名测评:四大维度横向实测,本地变现避坑指南 - 薛定谔的梨花猫
  • 昇腾多机训练中HCCL通信问题的分析与解决
  • 商业空间灯光选型,避开这四点比看参数更重要——五家商业照明品牌推荐 - 资讯速览
  • 深度解析:网易云音乐命令行客户端 MusicBox 的高效使用指南
  • 2026甘肃电动卷闸门定制安装多少钱 - 精选优质企业推荐官
  • 2026年夏邑县靠谱的驾校,连霍高速口黄金区位,返乡学车一站直达:夏邑大地驾校 C1C2 便民学车纪实专访 - GrowthUME
  • PCL-Silane 硅烷改性PCL普通PCL与硅烷PCL性能对比
  • 沈阳卖黄金不踩坑|2026 诚信回收商家完整攻略 - 逸程
  • 联邦学习中的SSR-FL技术:高效图像特征压缩与隐私保护
  • 2026北上广深雅思机构排名——一线城市家庭选课,本质上是在管理一笔留学的 - 资讯速览
  • 高效解决Sketch文本批量替换难题:Find and Replace插件深度解析
  • 2026济南格拉芙首饰回收横评:七家里谁最懂“钻石之王”?添价收用专业说话 - 薛定谔的梨花猫
  • 证件照处理全流程:从像素尺寸到抠图技巧,掌握合规制作核心方法
  • 换季整理翻出旧翡翠?成都回收攻略来了,禹竞名奢汇报价最实在 - 奢品小当家
  • 2026 年 6 月最新|涂胶设备实测排名:汽车涂胶设备 / 3C涂胶设备 / 新能源涂胶设备靠谱厂家权威榜单汇总 - 商业新知
  • 2026佛山万国手表回收实测排名:7家本地机构横向测评,闲置名表变现避坑指南 - 薛定谔的梨花猫
  • 2026常州个人黄金变现干货,全程无隐形消费交易无忧 - 奢侈品回收测评
  • 国产化紫外成像替代背景下,Knight UV系列相机半导体研发平台使用心得
  • 2026年小批量电路板定制深度选型指南:如何匹配适合的工厂方案? - 热点速览
  • 2026 广州这些首饰回收门店值得去,各类彩宝首饰免费鉴定 - 逸程
  • 段式虚拟存储器:一座“量身定制“的智慧大厦
  • 换季断舍离奢品一站式回收,首饰名表包包同步高价收 - 奢品小当家
  • 大模型评测框架重构:从静态打分到真实任务能力校准
  • 7 款无会员去水印工具实测,自媒体 2026 清单 - 时时资讯
  • 高价无损专业核验,2026哈尔滨回收百年灵手表优选榜单 - 名奢变现站
  • 汇编语言工程实践:标签系统与伪指令在嵌入式开发中的核心应用
  • 从效率角度看公众号编辑器:如何用AI重构内容生产流程 - 行业产品测评专家