JDK多版本切换安装与配置

在 Windows 环境下同时安装和配置多个版本的 JDK(例如经典的 JDK 8 和较新的 JDK 17/21)是开发者的常见需求。为了让你能清晰、零报错地完成配置,本教程将采用最标准、最稳定的"变量引用法"来详细讲解。

下载与安装多个版本的 JDK

1、获取安装包 :前往 Oracle 官网或 Adoptium (Eclipse Temurin) 等可信源,下载你需要的 JDK 版本安装包(如 .exe 安装版或 .zip 压缩包)。JDK官网下载

2、规划安装路径:建议在非系统盘(如 D 盘)创建一个统一的 Java 目录,并将不同版本的 JDK 存放在独立、无中文、无特殊字符的文件夹中。

  • 推荐的标准目录结构如下:

    复制代码
    D:\Program Files\Java\
    ├── jdk-1.8
    └── jdk-17

3、执行安装

  • 如果是 .exe 安装版,双击运行,在安装过程中手动将路径修改为你规划好的目录。
  • 如果是 .zip 压缩包,解压后直接将核心文件夹(注意不要多套一层文件夹)移动到规划好的目录即可。

️ 核心配置:通过环境变量实现共存

配置环境变量是实现多版本共存与自由切换的核心。请严格按照以下步骤操作,确保所有变量均配置在系统变量区域(而非用户变量)。

  1. 打开环境变量设置窗口

    • 桌面右键点击"此电脑" -> 选择"属性"。
    • 在系统页面找到并点击"高级系统设置"。
    • 在弹出的窗口右下角点击"环境变量"。
  2. 新建各版本的专属路径变量

    在"系统变量"区域点击"新建",分别为每个已安装的 JDK 版本创建一个专属变量。这样做的目的是为了方便后续统一管理,避免路径写死。

    • 变量名JAVA_8_HOME
      变量值D:\Program Files\Java\jdk-1.8(指向你的 JDK 8 根目录)
    • 变量名JAVA_17_HOME
      变量值D:\Program Files\Java\jdk-17(指向你的 JDK 17 根目录)
  3. 新建/修改主切换变量 JAVA_HOME

    继续在系统变量中点击"新建"(如果已有则点击编辑)。这个变量是系统识别默认 JDK 的核心,我们通过修改它的指向来实现版本切换。

    • 变量名JAVA_HOME
    • 变量值%JAVA_8_HOME%
    • 说明:这里默认指向 JDK 8。如果你想默认使用 JDK 17,将其值改为 %JAVA_17_HOME% 即可。注意前后带有 % 符号,这是引用上面创建的专属变量。
  4. 配置 Path 变量

    在系统变量列表中找到名为 Path 的变量,选中它并点击"编辑"。

    • 点击"新建",在列表中添加一条新记录:%JAVA_HOME%\bin
    • 关键避坑点 :Windows 系统在执行命令时会按照 Path 列表从上到下的顺序寻找。如果你的列表中原本就存在其他 Java 路径(例如 Oracle 自动生成的 C:\Program Files\Common Files\Oracle\Java\javapath),务必通过右侧的"上移"按钮,将 %JAVA_HOME%\bin 移动到列表的最顶端。否则系统会优先调用旧版本的 Java,导致你的切换配置失效。
    • 依次点击"确定"保存并关闭所有环境变量窗口。
  5. 配置 CLASSPATH 变量(可选但推荐)

    为了保证部分老项目或工具的兼容性,建议检查或新建 CLASSPATH 变量。

    • 变量名CLASSPATH
    • 变量值.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
    • 注意:最前面的 .; 代表当前目录,绝对不能遗漏。

版本切换与验证

完成上述配置后,你就可以随心所欲地切换 JDK 版本了。

  1. 验证当前版本

    • 必须关闭所有已经打开的命令行窗口(CMD 或 PowerShell),重新打开一个新的窗口(让新的环境变量生效)。

    • 输入以下命令查看当前生效的 JDK 版本:cmd

      复制代码
      java -version
      javac -version
    • 如果显示的是 JDK 8 的版本信息,说明配置成功。

  2. 自由切换版本

    • 当你需要使用 JDK 17 时,只需再次打开"环境变量"窗口,找到 JAVA_HOME 变量,将其值从 %JAVA_8_HOME% 修改为 %JAVA_17_HOME%,保存退出。
    • 重新打开一个新的命令行窗口,再次输入 java -version,你会发现版本已经成功切换为 JDK 17。

常见问题排查 (FAQ)

  • Q:修改了 JAVA_HOME 后,java -version 显示的版本没有变化?
    A :这通常是因为 Path 环境变量中存在优先级更高的旧 Java 路径。请回到 Path 变量的编辑界面,确认 %JAVA_HOME%\bin 是否被移到了最顶端。此外,务必确保你关闭了旧的命令行窗口并重新打开。

  • Q:提示"java 不是内部或外部命令"?
    A :请检查 JAVA_HOME 的变量值是否书写正确(路径是否真实存在),以及 Path 中是否正确添加了 %JAVA_HOME%\bin

  • Q:IDE(如 IntelliJ IDEA)中如何指定 JDK?
    A :IDE 通常有独立的 JDK 配置。你可以在 IDEA 的 File -> Project Structure -> SDKs 中,分别添加你安装在 D:\Program Files\Java\ 下的各个 JDK 目录。在创建项目时,可以为每个项目单独指定所需的 JDK 版本,这与系统的环境变量互不冲突。

相关推荐
葫芦和十三6 小时前
图解 MongoDB 02|BSON:你以为存的是 JSON,其实是带类型的二进制
后端·mongodb·agent
葫芦和十三6 小时前
图解 MongoDB 01|文档数据库
后端·mongodb·agent
陈随易8 小时前
VSCode的Copilot扩展支持接入DeepSeek,Kimi了!
前端·后端·程序员
我不是外星人10 小时前
有了 Harness Engineering ,真的还需要研发工程师吗?
前端·后端·ai编程
candyTong10 小时前
RTK 技术原理:一次典型会话里,80% 上下文是怎么省下来的
javascript·后端·架构
Rust研习社12 小时前
组合真的优于继承吗?为什么 Rust 和 Go 都拥抱组合舍弃继承?
后端·rust·编程语言
IT_陈寒12 小时前
JavaScript的闭包把我坑惨了,说好的内存会自动回收呢?
前端·人工智能·后端
CaffeinePro13 小时前
Pydantic深度使用:数据校验、枚举、ORM映射
后端·fastapi
Chenyiax14 小时前
从 Chat 到 Responses:OpenAI API 抽象为什么变了?
后端
MariaH14 小时前
Koa和Express的区别
后端