Windows怎么安装JDK并配置JAVA_HOME?本文介绍JDK8、JDK17、JDK21、JDK25在Windows 10/11下的安装方法,包含JAVA_HOME、Path配置、java -version验证、javac不是内部或外部命令、多个JDK版本切换、IDEA/Maven/Gradle配置检查。
最后更新:2026-05-26
适用系统:Windows 10 / Windows 11
适用场景:安装 JDK、配置 JAVA_HOME、配置 Path、解决 javac 不是内部或外部命令、切换多个 JDK 版本、IDEA / Maven / Gradle 使用错误 JDK
很多 Java 初学者或者刚接手老项目的开发者,第一步就卡在了 JDK 安装和环境变量配置上。
常见问题包括:
java 不是内部或外部命令
javac 不是内部或外部命令
JAVA_HOME 配置了但不生效
java -version 显示的不是刚安装的 JDK
IDEA 里还是旧 JDK
Maven 使用的 JDK 和命令行不一致
Gradle 使用的 JDK 和项目要求不一致
本文整理 Windows 系统下安装 JDK 和配置环境变量的完整步骤,包括 JDK8、JDK17、JDK21、JDK25 的选择建议,以及多个 JDK 共存时的切换方法。
如果你还没有下载 JDK,可以先看:
各版本JDK镜像下载地址:JDK8 / JDK11 / JDK17 / JDK21 / JDK25 / JDK26 下载与IDEA配置指南
一、先说结论:Windows安装JDK推荐这样做
普通开发者建议:
1. 下载 Eclipse Temurin JDK 或其他 OpenJDK 发行版
2. 安装或解压到固定目录
3. 配置 JAVA_HOME
4. 把 %JAVA_HOME%\bin 添加到 Path
5. 使用 java -version 和 javac -version 验证
6. 在 IDEA / Maven / Gradle 中确认 JDK 配置一致
推荐安装目录:
D:\Java\jdk-8
D:\Java\jdk-17
D:\Java\jdk-21
D:\Java\jdk-25
不太建议安装到路径复杂的位置,例如:
D:\我的开发工具\Java JDK 版本\jdk-17
原因是路径里包含中文、空格、特殊符号时,少数工具或脚本可能出现兼容问题。
二、Windows应该安装哪个JDK版本?
可以先参考下面这张表。
| JDK版本 | 适合场景 | 是否推荐新项目 |
|---|---|---|
| JDK 8 | 老项目、传统企业项目、部分旧 Spring Boot 2 项目 | 不建议新项目使用 |
| JDK 11 | 过渡期项目、部分存量微服务项目 | 一般不作为新项目首选 |
| JDK 17 | 当前主流 Java 项目、Spring Boot 3 项目 | 推荐 |
| JDK 21 | 新项目、云原生项目、虚拟线程相关项目 | 推荐 |
| JDK 25 | 新一代 LTS,适合未来项目评估 | 可以开始关注 |
| JDK 26 | 新特性版本,适合测试和尝鲜 | 不建议普通生产项目直接使用 |
如果你不知道怎么选,可以按下面规则:
老项目:按项目要求使用 JDK8 或 JDK11
当前新项目:优先 JDK17 或 JDK21
长期维护新项目:可以评估 JDK25
学习新特性:可以使用 JDK26
如果你使用的是 Spring Boot 3,一般至少需要 JDK17。
如果你维护的是老项目,尤其是很多年前的企业项目,仍然可能要求 JDK8。
三、JDK下载方式推荐
1. 推荐普通开发者使用 Eclipse Temurin
Eclipse Temurin 是目前常见的 OpenJDK 发行版之一,适合大多数 Java 开发者。
适合:
Windows 本地开发
IDEA 开发 Java 项目
Maven / Gradle 构建
Spring Boot 项目
普通企业项目
推荐下载方式:
JDK 17 或 JDK 21
Windows
x64
Package Type: JDK
注意:开发 Java 项目请下载 JDK,不要只下载 JRE。
2. Oracle JDK适合什么情况?
Oracle JDK 适合这些场景:
公司明确要求使用 Oracle JDK
生产环境历史上一直使用 Oracle JDK
项目文档指定 Oracle JDK
需要和已有环境保持一致
如果公司没有明确要求,普通开发环境使用 Temurin、Corretto、Dragonwell、Kona、毕昇 JDK 等 OpenJDK 发行版通常已经足够。
生产环境使用 Oracle JDK 时,要注意许可证和公司合规要求。
3. 安装包和压缩包怎么选?
常见下载形式有两种:
.msi 安装包
.zip 压缩包
区别如下:
| 类型 | 优点 | 缺点 | 适合人群 |
|---|---|---|---|
.msi 安装包 | 双击安装,步骤简单,可选择配置 PATH / JAVA_HOME | 安装路径和组件需要注意 | 新手 |
.zip 压缩包 | 绿色解压,方便多版本共存 | 需要手动配置环境变量 | 有经验的开发者 |
我的建议:
新手:使用 .msi 安装包
需要多个 JDK 共存:使用 .zip 压缩包
团队统一版本:推荐压缩包 + 固定目录
四、方式一:使用MSI安装包安装JDK
以 Eclipse Temurin 为例。
1. 下载 Windows x64 MSI 安装包
选择:
Operating System: Windows
Architecture: x64
Package Type: JDK
Version: 17 或 21
Installer: .msi
下载后双击安装。
2. 选择安装组件
安装过程中如果有自定义选项,建议开启:
Add to PATH
Set JAVA_HOME variable
有些安装包默认只添加 PATH,不一定自动设置 JAVA_HOME,所以安装时要看清楚。
如果你忘记勾选,也没关系,后面可以手动配置。
3. 安装目录建议
默认目录可能类似:
C:\Program Files\Eclipse Adoptium\jdk-17.x.x
也可以手动改成:
D:\Java\jdk-17
我更推荐统一放到:
D:\Java\
例如:
D:\Java\jdk-8
D:\Java\jdk-17
D:\Java\jdk-21
D:\Java\jdk-25
这样以后切换版本和排查问题更方便。
五、方式二:使用ZIP压缩包安装JDK
如果你下载的是 .zip 压缩包,可以按下面方式处理。
1. 解压JDK
假设下载的是 JDK17,解压到:
D:\Java\jdk-17
目录结构应该类似:
D:\Java\jdk-17
├── bin
├── conf
├── include
├── jmods
├── legal
├── lib
└── release
注意:JAVA_HOME 应该指向 JDK 根目录,不是 bin 目录。
正确:
D:\Java\jdk-17
错误:
D:\Java\jdk-17\bin
2. 多个JDK可以这样放
如果你经常维护不同项目,可以这样管理:
D:\Java\jdk-8
D:\Java\jdk-11
D:\Java\jdk-17
D:\Java\jdk-21
D:\Java\jdk-25
后面切换版本时,只需要修改:
JAVA_HOME
不需要改一堆地方。
六、配置JAVA_HOME环境变量
1. 打开环境变量设置
Windows 10 / Windows 11 可以这样打开:
此电脑 > 右键 > 属性 > 高级系统设置 > 环境变量
或者:
开始菜单搜索:环境变量
选择:编辑系统环境变量
点击:环境变量
2. 新建JAVA_HOME
在“系统变量”里点击:
新建
填写:
变量名:JAVA_HOME
变量值:D:\Java\jdk-17
如果你安装的是 JDK21,则填写:
变量名:JAVA_HOME
变量值:D:\Java\jdk-21
注意:
不要写成 D:\Java\jdk-17\bin
不要在路径最后多加分号
不要加引号
正确示例:
D:\Java\jdk-17
错误示例:
"D:\Java\jdk-17"
D:\Java\jdk-17\bin
D:\Java\jdk-17;
七、配置Path环境变量
1. 找到Path
在“系统变量”中找到:
Path
点击:
编辑
然后新增一行:
%JAVA_HOME%\bin
建议把它放到比较靠前的位置,尤其是在你电脑上安装过多个 JDK 的情况下。
2. 不推荐直接写死JDK路径
可以这样写:
%JAVA_HOME%\bin
不建议这样写:
D:\Java\jdk-17\bin
原因是:以后你从 JDK17 切换到 JDK21,只需要改 JAVA_HOME,不用再改 Path。
3. 避免Path里有多个Java路径
很多人配置不生效,是因为 Path 里有多个 Java 路径,例如:
C:\Program Files\Common Files\Oracle\Java\javapath
C:\Program Files\Java\jdk1.8.0_XXX\bin
D:\Java\jdk-17\bin
%JAVA_HOME%\bin
这时 Windows 会按 Path 的顺序查找 java.exe。
如果前面已经有旧版本 Java,命令行就可能一直显示旧版本。
建议:
1. 保留 %JAVA_HOME%\bin
2. 删除或下移旧的 Java 路径
3. 确保 %JAVA_HOME%\bin 在旧 Java 路径前面
八、验证JDK是否安装成功
配置完成后,关闭所有已经打开的命令行窗口,重新打开一个新的 CMD 或 PowerShell。
1. 查看Java版本
java -version
正常输出类似:
openjdk version "17.0.x"
或者:
java version "21.0.x"
2. 查看javac版本
javac -version
正常输出类似:
javac 17.0.x
或者:
javac 21.0.x
如果 java -version 正常,但 javac -version 报错,通常说明:
1. 你安装的是 JRE,不是 JDK
2. JAVA_HOME 指错了目录
3. Path 没有配置 %JAVA_HOME%\bin
4. 命令行窗口没有重新打开
3. 查看JAVA_HOME
CMD:
echo %JAVA_HOME%
PowerShell:
echo $env:JAVA_HOME
输出应该类似:
D:\Java\jdk-17
如果输出为空,说明 JAVA_HOME 没有配置成功。
4. 查看java.exe实际路径
CMD:
where java
输出可能是:
D:\Java\jdk-17\bin\java.exe
如果你看到的是:
C:\Program Files\Common Files\Oracle\Java\javapath\java.exe
或者旧版本路径,就说明 Path 顺序可能有问题。
九、javac不是内部或外部命令怎么办?
如果执行:
javac -version
报错:
'javac' 不是内部或外部命令,也不是可运行的程序或批处理文件
常见原因有 5 个。
1. 安装的是JRE,不是JDK
JRE 主要用于运行 Java 程序,JDK 才包含编译工具 javac。
解决:
重新下载并安装 JDK
不要只装 JRE。
2. JAVA_HOME 指向了 bin 目录
错误:
JAVA_HOME=D:\Java\jdk-17\bin
正确:
JAVA_HOME=D:\Java\jdk-17
Path 中再添加:
%JAVA_HOME%\bin
3. Path没有添加%JAVA_HOME%\bin
检查 Path 是否包含:
%JAVA_HOME%\bin
没有的话新增一行。
4. 命令行窗口没有重开
环境变量修改后,已经打开的 CMD / PowerShell 不一定立即生效。
解决:
关闭所有命令行窗口
重新打开 CMD 或 PowerShell
再次执行 java -version 和 javac -version
5. Path里旧Java路径排在前面
执行:
where java
如果第一行不是你期望的 JDK 路径,就需要调整 Path 顺序。
十、java -version不是刚安装的JDK怎么办?
比如你安装了 JDK17,但执行:
java -version
却显示:
1.8.0_xxx
说明系统优先找到了旧版本 Java。
按这个顺序排查:
1. echo %JAVA_HOME%
2. where java
3. 检查 Path 顺序
4. 删除或下移旧 Java 路径
5. 重新打开命令行窗口
重点检查 Path 中是否有:
C:\Program Files\Common Files\Oracle\Java\javapath
C:\Program Files\Java\jdk1.8.0_xxx\bin
如果这些路径排在 %JAVA_HOME%\bin 前面,就可能导致版本不对。
十一、Windows如何切换多个JDK版本?
如果你电脑上同时安装了多个 JDK:
D:\Java\jdk-8
D:\Java\jdk-17
D:\Java\jdk-21
D:\Java\jdk-25
推荐的切换方式是:
只修改 JAVA_HOME
Path 始终保留 %JAVA_HOME%\bin
例如当前使用 JDK17:
JAVA_HOME=D:\Java\jdk-17
要切换到 JDK21:
JAVA_HOME=D:\Java\jdk-21
然后重新打开命令行,验证:
java -version
javac -version
十二、使用命令行配置JAVA_HOME
如果你不想通过图形界面,也可以用命令配置。
1. 设置用户级JAVA_HOME
CMD:
setx JAVA_HOME "D:\Java\jdk-17"
设置完成后,重新打开命令行。
2. 设置系统级JAVA_HOME
需要以管理员身份打开 CMD:
setx /M JAVA_HOME "D:\Java\jdk-17"
注意:setx 设置后不会影响当前已经打开的命令行窗口,需要重新打开 CMD / PowerShell 才能生效。Microsoft 官方文档也说明,setx 用于创建或修改用户或系统环境变量。([Microsoft Learn][3])
3. 不建议随便用setx覆盖Path
有些教程会让你直接执行:
setx PATH "%JAVA_HOME%\bin;%PATH%"
不建议新手这样做。
原因是:
1. 容易把 Path 写乱
2. 容易重复添加 Java 路径
3. 旧系统或特殊情况下可能截断 Path
4. 不如图形界面直观
更稳妥的方法是:
通过系统环境变量界面手动添加 %JAVA_HOME%\bin
十三、IDEA中还要配置JDK
Windows 环境变量配置好了,不代表 IDEA 一定使用这个 JDK。
在 IntelliJ IDEA 中还要检查:
File > Project Structure > Project > Project SDK
以及:
File > Project Structure > Modules > Dependencies > Module SDK
如果是 Maven 项目,还要检查:
Settings > Build Tools > Maven > Runner > JRE
如果是 Gradle 项目,还要检查:
Settings > Build Tools > Gradle > Gradle JVM
如果 IDEA 中的 JDK 配置不对,可能出现:
Project SDK is not defined
java: invalid source release: 17
Unsupported class file major version 65
No compiler is provided in this environment
详细配置方法可以看:
十四、Maven项目需要检查JDK版本
Maven 使用哪个 JDK,不一定完全取决于你以为的配置。
在命令行执行:
mvn -version
重点看:
Java version
Java home
如果项目需要 JDK17,但这里显示 JDK8,就要检查:
JAVA_HOME
Path
IDEA Maven Runner JRE
Maven 项目建议在 pom.xml 中明确指定编译版本。
JDK17 项目:
<properties>
<maven.compiler.release>17</maven.compiler.release>
</properties>
JDK21 项目:
<properties>
<maven.compiler.release>21</maven.compiler.release>
</properties>
如果 Maven 下载依赖很慢,可以看:
Maven国内镜像settings.xml配置大全:阿里云、腾讯云、华为云、清华源
十五、Gradle项目需要检查JDK版本
Gradle 项目执行:
gradlew.bat --version
或者:
./gradlew --version
重点看输出里的:
JVM
如果 JVM 版本不对,要检查:
JAVA_HOME
IDEA Gradle JVM
gradle.properties
Java Toolchain
Gradle 项目建议配置 Java Toolchain。
JDK17:
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
JDK21:
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
如果 Gradle 下载慢,可以看:
Gradle国内镜像配置教程:init.gradle、repositories与Wrapper加速完整指南
十六、常见报错解决
1. java不是内部或外部命令
原因:
Path 没有配置 Java 路径
解决:
1. 确认 JAVA_HOME 是否正确
2. 确认 Path 是否包含 %JAVA_HOME%\bin
3. 重新打开命令行
4. 执行 where java 检查路径
2. javac不是内部或外部命令
原因:
可能只安装了 JRE,或者 Path 没有配置 JDK 的 bin 目录
解决:
1. 安装 JDK
2. JAVA_HOME 指向 JDK 根目录
3. Path 添加 %JAVA_HOME%\bin
4. 重新打开命令行
3. java -version显示旧版本
原因:
Path 中旧 Java 路径排在前面
解决:
1. 执行 where java
2. 找到实际生效的 java.exe
3. 调整 Path 顺序
4. 确保 %JAVA_HOME%\bin 排在旧路径前面
4. invalid source release: 17
原因:
项目要求 Java 17 编译,但当前 JDK 版本低于 17
解决:
1. 安装 JDK17 或更高版本
2. JAVA_HOME 指向 JDK17
3. IDEA Maven Runner JRE 改成 JDK17
4. Gradle JVM 改成 JDK17
5. 重新导入项目
5. Unsupported class file major version 65
含义:
major version 65 = Java 21
通常说明:
某个 class 文件是 JDK21 编译的
但当前运行环境低于 JDK21
解决:
1. 升级运行 JDK 到 21 或更高
2. 或者降低项目编译版本
更多版本对照可以看:
Java版本号与class文件major version对照表:Unsupported class file major version 52 / 55 / 61 / 65 / 69 / 70
6. No compiler is provided in this environment
常见报错:
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
原因:
当前使用的是 JRE,不是 JDK
解决:
1. 安装 JDK
2. JAVA_HOME 指向 JDK 根目录
3. Maven Runner JRE 选择 JDK
4. 不要只安装 JRE
十七、最终检查清单
Windows 安装 JDK 后,建议按下面清单检查:
1. JDK 是否安装或解压到固定目录
2. JAVA_HOME 是否指向 JDK 根目录
3. Path 是否包含 %JAVA_HOME%\bin
4. Path 中旧 Java 路径是否排在前面
5. java -version 是否正确
6. javac -version 是否正确
7. echo %JAVA_HOME% 是否正确
8. where java 是否指向预期目录
9. IDEA Project SDK 是否正确
10. Maven Runner JRE 是否正确
11. Gradle JVM 是否正确
12. pom.xml / build.gradle 是否指定了正确 Java 版本
如果这 12 项都检查过,大多数 Windows JDK 环境变量问题都能解决。
十八、推荐配置示例
假设你要使用 JDK17,推荐这样配置:
JDK目录:
D:\Java\jdk-17
JAVA_HOME:
D:\Java\jdk-17
Path新增:
%JAVA_HOME%\bin
验证命令:
java -version
javac -version
echo %JAVA_HOME%
where java
如果你要切换到 JDK21,只需要改:
JAVA_HOME=D:\Java\jdk-21
Path 仍然保持:
%JAVA_HOME%\bin
十九、相关文章
如果你还没有下载 JDK,可以先看:
各版本JDK镜像下载地址:JDK8 / JDK11 / JDK17 / JDK21 / JDK25 / JDK26 下载与IDEA配置指南
如果你在 IDEA 中不知道怎么配置 JDK,可以看:
如果 Maven 下载依赖很慢,可以看:
Maven国内镜像settings.xml配置大全:阿里云、腾讯云、华为云、清华源
如果 Gradle 下载慢,可以看:
Gradle国内镜像配置教程:init.gradle、repositories与Wrapper加速完整指南
如果遇到 JDK 版本不兼容,可以看:
Java版本号与class文件major version对照表:Unsupported class file major version 52 / 55 / 61 / 65 / 69 / 70
完整环境配置可以查看:
Java开发环境配置专题:JDK、IDEA、Maven、Gradle、版本兼容与常见报错
更新记录
2026-05-26:
- 增加 Windows 安装 JDK 完整步骤
- 增加 JAVA_HOME 和 Path 配置方法
- 增加 JDK8 / JDK17 / JDK21 / JDK25 版本选择建议
- 增加 javac 不是内部或外部命令解决办法
- 增加 java -version 显示旧版本排查方法
- 增加 Windows 多 JDK 切换方法
- 增加 IDEA / Maven / Gradle JDK 配置检查项
- 增加 Java 环境配置专题内链
Windows安装JDK 8 / 17 / 21 / 25完整教程:JAVA_HOME环境变量配置与验证
https://java.li/archives/windows-install-jdk-java-home
评论