惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
Y
Y Combinator Blog
博客园 - 【当耐特】
V
Visual Studio Blog
GbyAI
GbyAI
V
V2EX
P
Proofpoint News Feed
Microsoft Azure Blog
Microsoft Azure Blog
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net
Hugging Face - Blog
Hugging Face - Blog
A
About on SuperTechFans
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
量子位
MongoDB | Blog
MongoDB | Blog
有赞技术团队
有赞技术团队
人人都是产品经理
人人都是产品经理
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件

沉迷在 - Java.li - 无法自拔

Spring Boot 整合 MyBatis DeepSeek Harness 深入解读 Spring Boot 连接 MySQL GitHub发生故障,崩了7个小时 Spring Boot 配置文件怎么写 SpringBoot 教程 MyBatis Invalid bound statement 怎么处理 Spring Boot 端口被占用怎么处理 Qdrant 向量数据库入门 Spring Boot 接收 JSON 参数 Spring Boot启动报错 Failed to configure a DataSource 解决办法 Maven依赖冲突怎么排查?dependency:tree、exclusions与版本统一完整教程 - 沉迷在 - Java.li - 无法自拔 给网站加一条会动的人群横幅:Little People 动画组件 Demo - 沉迷在 - Java.li - 无法自拔 【soso.re】聚合热榜 | CloudflareWorkers部分接口失效的排查与代理方案 - 沉迷在 - Java.li - 无法自拔 Spring Boot 2升级到Spring Boot 3完整指南:JDK17、javax迁移jakarta、依赖兼容与常见报错 - 沉迷在 - Java.li - 无法自拔 随机小姐姐视频 - 沉迷在 - Java.li - 无法自拔 Spring Boot与JDK版本兼容表:Spring Boot 2.x / 3.x / 4.x应该用哪个Java版本? - 沉迷在 - Java.li - 无法自拔 No compiler is provided in this environment解决办法:JDK、JRE、Maven与IDEA排查 - 沉迷在 - Java.li - 无法自拔 置身钉内|含全文 PDF - 沉迷在 - Java.li - 无法自拔 javac不是内部或外部命令怎么解决?JDK、JAVA_HOME和Path完整排查 Windows配置JAVA_HOME后不生效怎么办?java -version显示旧版本解决办法 Maven Could not transfer artifact 下载失败解决:settings.xml、国内镜像、本地缓存与代理排查 JSON转Java实体类完整教程:对象、数组、嵌套结构与LocalDateTime处理 IDEA下载JDK很慢怎么办?手动配置本地JDK完整教程 Java版本号与class文件major version对照表:Unsupported class file major version 52 / 55 / 61 / 65 / 69 / 70 Gradle国内镜像配置教程:init.gradle、repositories与Wrapper加速完整指南 Maven国内镜像settings.xml配置大全:阿里云、腾讯云、华为云、清华源 Java开发者必备工具箱 2026年Java行情深度解读:就业真实现状、语言排名与开发者破局指南 如何防止服务器被暴力破解?2026年最全的5层防护实战指南
Windows安装JDK 8 / 17 / 21 / 25完整教程:JAVA_HOME环境变...
HiF · 2026-05-26 · via 沉迷在 - Java.li - 无法自拔

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不是内部或外部命令怎么解决?JDK、JAVA_HOME和Path完整排查

如果执行:

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 前面,就可能导致版本不对。

如果你已经配置了 JAVA_HOME,但 java -version 仍然显示旧版本,或者 where java 显示的是旧 JDK 路径,可以继续看:

Windows配置JAVA_HOME后不生效怎么办?java -version显示旧版本解决办法


十一、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

详细配置方法可以看:

IDEA下载JDK很慢怎么办?手动配置本地JDK完整教程


十四、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,可以看:

IDEA下载JDK很慢怎么办?手动配置本地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 环境配置专题内链