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 版本,这与系统的环境变量互不冲突。

相关推荐
流年似水~1 小时前
Java新手5分钟接AI:Spring AI Alibaba实战
java·人工智能·spring
DarkAthena2 小时前
【YaShanDB】给YaShanDB开发R2DBC驱动
java·yashandb·r2dbc
014-code2 小时前
布隆过滤器:判断“可能存在“和“一定不存在“
java·redis
兔小盈2 小时前
多线程篇-(二)线程创建、中断与终止
java·开发语言·多线程
Java编程爱好者2 小时前
1-5 线程池:Thread+阻塞队列+循环
后端
jnrjian2 小时前
Library Cache Load Lock library cache pins are replaced by mutexes
java·后端·spring
abcnull2 小时前
传统的JavaWeb项目Demo快速学习!
java·servlet·elementui·vue·javaweb
用户9416146933652 小时前
Python 批量获取 A 股全市场 K 线数据并计算技术指标(附完整代码)
后端
risc1234562 小时前
【lucene】PostingsEnum跟TermsEnum 的区别是啥?
java·lucene