Windows 上 JDK17 下载安装与环境变量配置全攻略

发布时间:2026/9/20 15:41:57
Windows 上 JDK17 下载安装与环境变量配置全攻略 1. 为什么 JDK17 值得你花半小时折腾JDK17 是 Java 生态里一个绕不开的版本。如果你最近在跑 Spring Boot 3.x、用 Maven 构建新项目或者打开 IDEA 新建工程时看到默认选项已经是 17那基本可以确定这个版本不是“可选升级”而是很多主流框架的最低门槛。我从 JDK8 一路用到 17中间踩过的坑不算少今天就把 Windows 上从下载到环境变量配通的全过程拆开讲一遍顺带把那些教程里不写、但新手一定会撞上的问题说清楚。这篇内容适合三类人第一类是刚接触 Java、第一次在 Windows 上装 JDK 的同学第二类是原来用 JDK8现在因为项目要求必须切到 17 的开发者第三类是环境变量配了但java -version死活不生效、被JAVA_HOME折腾过的朋友。整篇围绕Windows、JDK17、下载安装、环境变量、JAVA_HOME这几个核心点展开每一步都给出理由和验证方法你照着做基本不会翻车。先说一个结论JDK17 的安装本身不复杂真正让人头疼的是环境变量。很多人装完发现命令行里java能用但javac报错或者 Maven 构建时提示找不到JAVA_HOME根源都在环境变量没配对。所以我会把环境变量这块讲得比一般教程细包括JAVA_HOME、Path、CLASSPATH到底该不该设、怎么设。2. 下载前的准备与版本选择2.1 选哪个发行版Oracle JDK 还是 OpenJDK打开搜索引擎搜“JDK17 下载”你会看到一堆结果Oracle 官网、Eclipse Temurin、Amazon Corretto、Microsoft Build of OpenJDK、Zulu……新手第一反应是“我该下哪个”。这里给一个明确建议个人学习和小型项目直接用 Eclipse Temurin 或者 Oracle JDK 都行企业项目建议用 Temurin 或 Corretto。原因在于授权。Oracle JDK 从某个版本之后对商业使用有许可要求而 Temurin原 AdoptOpenJDK是社区维护的 OpenJDK 构建免费且长期支持。我自己的机器上装的是 Temurin 17公司项目用的是 Corretto 17两者在功能上没差别都是基于同一套 OpenJDK 源码编译的。你如果只是本地跑跑代码随便选一个都行但别去下那种来路不明的“绿色版”“精简版”后面出问题很难排查。2.2 确认系统位数和安装包类型Windows 现在基本都是 64 位下载时认准x64就行。安装包分两种exe 安装版和zip 免安装版。我推荐新手用 exe 安装版因为它会自动帮你把一部分路径配好省事老手或者需要多版本共存的人用 zip 版更灵活解压到指定目录环境变量自己指过去就行。这里有个细节exe 安装版默认会装到C:\Program Files\Java\jdk-17这类路径路径里带空格。有些老工具对带空格的路径支持不好所以如果你后面要装一些年代久远的构建工具建议装到D:\dev\jdk17这种没有空格、没有中文的目录。我自己就是装在D:\soft\jdk17后面配 Maven、Gradle 都省心。提示安装路径千万不要带中文和空格这是后面很多“莫名其妙报错”的源头。2.3 下载渠道与校验去 Temurin 官网或者 Oracle 官网下载时注意选对版本号。JDK17 的小版本会更新比如 17.0.9、17.0.10选最新的稳定版即可。下载完成后如果官网提供了 SHA256 校验值建议核对一下尤其是从非官方镜像下载的时候。校验方法很简单在 PowerShell 里执行Get-FileHash 文件名 -Algorithm SHA256对比一下就行。这一步很多人跳过但如果你下载的安装包被动过手脚后面出的问题就不是环境变量能解释的了。3. 安装过程与关键选项3.1 exe 安装版的逐步操作双击下载好的 exe安装向导会依次问你几个问题。第一个是安装路径按前面说的改成无空格无中文的目录。第二个是是否安装公共 JREJDK17 之后其实已经不再单独提供 JRE 了这个选项一般不用管。第三个是是否设置JAVA_HOME环境变量这个勾一定要勾上它能帮你省掉手动配JAVA_HOME的步骤。安装完成后先别急着配 Path打开一个新的命令行窗口输入java -version。如果能看到版本号说明安装程序已经帮你把基础环境配好了。但注意这时候javac可能还不能用因为安装程序通常只把java加到了 Pathjavac需要你自己确认。我遇到过好几次装完只有java能用的情况所以下一步的验证很关键。3.2 zip 免安装版的解压与放置如果你下的是 zip 版解压后你会看到一个jdk-17.x.x的文件夹。把它移动到你想要的目录比如D:\soft\jdk17。注意不要直接解压到桌面或者下载文件夹那些位置容易被清理而且路径可能带中文。移动完成后这个目录就是你的 JDK 根目录后面配JAVA_HOME时指向它。zip 版的好处是干净卸载时直接删文件夹就行不会在注册表里留东西。坏处是所有环境变量都得自己配。我一般给需要同时装 JDK8 和 JDK17 的机器用 zip 版通过切换JAVA_HOME来切换版本比装两个 exe 再改 Path 清爽得多。3.3 安装后的目录结构速览不管哪种方式装完后你的 JDK 目录下应该有这些关键文件夹bin放的是java.exe、javac.exe这些可执行文件lib放的是类库conf放的是配置文件include是给本地代码用的头文件。你不需要记住所有但要知道bin目录是后面配 Path 时要指向的地方。很多人配 Path 时指到了 JDK 根目录结果命令行里找不到java就是因为少了一层bin。4. 环境变量配置JAVA_HOME 与 Path 的正确姿势4.1 为什么需要 JAVA_HOME先解释一下JAVA_HOME是干嘛的。简单说它是一个“约定俗成”的变量很多工具Maven、Gradle、Tomcat、IDEA启动时会去读这个变量从而找到 JDK 在哪。你如果不设它单独用java命令可能没问题但一旦用 Maven 构建项目就可能报could not find java executable in JAVA_HOME or path这种错。所以JAVA_HOME不是给 Windows 用的是给这些第三方工具用的。JAVA_HOME的值应该是 JDK 的根目录比如D:\soft\jdk17不要带bin。这一点和 Path 正好相反Path 里要带bin。我见过不少人把JAVA_HOME设成D:\soft\jdk17\bin结果 Maven 死活找不到排查半天才发现是这里多了一层。4.2 图形界面配置步骤在 Windows 上配环境变量最稳妥的方式是通过系统设置。右键“此电脑” → 属性 → 高级系统设置 → 环境变量。你会看到上下两个区域上面是用户变量下面是系统变量。建议配在系统变量里这样所有用户都能用而且不容易被某些软件的局部配置覆盖。具体操作在系统变量里点“新建”变量名填JAVA_HOME变量值填你的 JDK 根目录比如D:\soft\jdk17。然后找到系统变量里的Path双击编辑点“新建”填入%JAVA_HOME%\bin。用%JAVA_HOME%这种引用方式的好处是以后换 JDK 版本只需要改JAVA_HOME的值Path 不用动。注意Path 里如果已经有其他 Java 相关的条目建议把它们删掉或者移到%JAVA_HOME%\bin后面否则可能出现版本冲突java -version显示的不是你想要的版本。4.3 命令行配置方式适合批量或远程如果你经常重装系统或者需要远程指导别人配用命令行更快。以管理员身份打开 PowerShell执行下面两条命令[Environment]::SetEnvironmentVariable(JAVA_HOME, D:\soft\jdk17, Machine) [Environment]::SetEnvironmentVariable(Path, $env:Path ;%JAVA_HOME%\bin, Machine)第一条设置JAVA_HOME第二条把%JAVA_HOME%\bin追加到系统 Path。执行完后需要重启命令行窗口才能生效。这种方式的好处是准确、可复制不会因为手点错位置而出问题。但要注意$env:Path取的是当前进程的 Path可能不包含最新的系统 Path所以更严谨的做法是先读取机器级别的 Path 再追加。不过对大多数场景上面这种写法够用了。4.4 验证配置是否生效配完之后一定要开一个新的命令行窗口旧窗口不会自动加载新变量。然后依次执行echo %JAVA_HOME% java -version javac -version第一条应该输出你的 JDK 路径第二条输出java version 17.x.x第三条输出javac 17.x.x。如果java能用但javac不能用说明 Path 里只加了java.exe所在的目录或者你装的是只含运行时的包。如果echo %JAVA_HOME%输出的是%JAVA_HOME%本身说明变量没设成功检查一下是不是设到了用户变量而当前用的是另一个用户。5. 常见报错与排查实录5.1 java 不是内部或外部命令这是最经典的报错。原因通常是 Path 没配好或者配了但没生效。排查顺序先echo %Path%看看里面有没有%JAVA_HOME%\bin或者 JDK 的 bin 路径再看JAVA_HOME是否指向了正确的目录最后确认命令行窗口是不是新开的。如果 Path 里用的是绝对路径而不是%JAVA_HOME%\bin检查那个绝对路径是否真的存在java.exe。还有一种情况Path 里同时存在多个 Java 路径系统按顺序找找到了旧版本。这时候把%JAVA_HOME%\bin移到最前面就行。我自己的习惯是Path 里只保留一条 Java 相关的条目其他全删掉避免混乱。5.2 could not find java executable in JAVA_HOME or path这个报错通常出现在 Maven 或 Gradle 构建时。字面意思是“在 JAVA_HOME 或 Path 里找不到 java 可执行文件”。排查思路先确认JAVA_HOME的值是不是 JDK 根目录而不是bin目录再确认JAVA_HOME指向的目录下确实有bin\java.exe。如果JAVA_HOME设对了但工具还是报错可能是工具读取的是用户变量而不是系统变量或者工具启动时环境变量还没加载。我遇到过一次是因为在 IDEA 里配置的 Maven Runner 使用了“环境变量”覆盖把JAVA_HOME指到了一个不存在的路径。这种情况要去 IDEA 的设置里检查 Maven 的 Runner 配置看有没有手动指定环境变量。5.3 cannot determine path to tools.jar这个报错在 JDK17 上比较特殊。tools.jar是 JDK8 及之前版本的东西JDK9 之后模块化改革tools.jar已经不存在了。如果你在 JDK17 环境下看到这个报错说明你用的某个工具或插件还在按老版本的方式找tools.jar。解决办法通常是升级那个工具到支持 JDK17 的版本或者检查项目配置里有没有硬编码tools.jar的路径。比如有些老版本的 Lombok、某些 IDE 插件在 JDK17 下会报这个错。升级到最新版基本能解决。如果升级不了那就只能换回 JDK8 跑那个项目或者找替代方案。5.4 环境变量配了但重启后失效这种情况一般是配到了“临时环境变量”里比如在命令行里用set JAVA_HOME...设置的只对当前窗口有效。要永久生效必须通过系统设置或者SetEnvironmentVariable的 Machine/User 级别来设。另外如果你用的是公司电脑可能有域策略在登录时重置环境变量这种情况需要联系 IT 部门。5.5 常见问题速查表报错信息可能原因解决方法java 不是内部或外部命令Path 未配或未生效检查 Path 是否含%JAVA_HOME%\bin新开窗口could not find java executableJAVA_HOME 指向错误确认 JAVA_HOME 为 JDK 根目录不含 bincannot determine path to tools.jar工具不兼容 JDK17升级工具或换 JDK8版本显示不对Path 中有多个 Java 路径删除旧路径把新路径移到最前echo %JAVA_HOME% 输出变量名本身变量未设置成功检查是否设到了正确的变量区域6. 多版本共存与切换技巧6.1 为什么需要多版本共存实际开发中你很可能同时维护老项目和新项目。老项目用 JDK8新项目用 JDK17如果每次切换都要重装 JDK那太折腾了。多版本共存的核心思路是装多个 JDK 到不同目录通过切换JAVA_HOME来切换默认版本。Path 里始终用%JAVA_HOME%\bin这样改JAVA_HOME就等于改默认 JDK。6.2 手动切换与脚本切换手动切换就是去环境变量设置里改JAVA_HOME的值改成 JDK8 的目录或者 JDK17 的目录。改完新开命令行窗口生效。这种方式简单但每次都要点好几层菜单麻烦。更高效的方式是写两个批处理脚本比如use-jdk8.bat和use-jdk17.bat内容分别是echo off setx JAVA_HOME D:\soft\jdk8 /M echo JDK8 activated. Open a new terminal.echo off setx JAVA_HOME D:\soft\jdk17 /M echo JDK17 activated. Open a new terminal.以管理员身份运行对应的 bat就能快速切换。setx的/M参数表示设置系统变量。注意setx有长度限制而且设置后需要新窗口生效。这种方式比手点快得多我自己的机器上就放了这么两个脚本。6.3 IDE 内的版本配置命令行切了JAVA_HOMEIDE 里不一定跟着变。IDEA 有自己的 JDK 配置在 Project Structure 里可以单独指定项目用的 JDK。Eclipse 也有类似的设置。所以即使系统默认是 JDK8你仍然可以在 IDEA 里给某个项目单独配 JDK17。这种“系统默认 项目覆盖”的方式比全局切换更灵活推荐在 IDE 里按项目配置。7. 装完之后验证与后续配置7.1 写一个 Hello World 验证环境配好后别只看版本号实际编译运行一个程序才算真正验证通过。新建一个Hello.java内容如下public class Hello { public static void main(String[] args) { System.out.println(JDK17 environment is ready.); } }然后在命令行里执行javac Hello.java和java Hello。如果能看到输出说明javac和java都正常工作。这一步能同时验证编译和运行环境比单纯看版本号更可靠。7.2 配置 Maven 的 JAVA_HOME如果你用 Maven装完 JDK 后还要确认 Maven 能找到它。Maven 启动时会读JAVA_HOME所以只要系统变量设对了Maven 一般没问题。但如果你在maven.cmd或mvn.cmd里手动改过JAVA_HOME那就要检查那个文件。另外Maven 的settings.xml里也可以配 JDK 版本但那是编译级别的事和运行环境是两码事。7.3 检查 IDE 的 SDK 配置IDEA 里File → Project Structure → SDKs确认 JDK17 已经被添加。如果没有点“Add SDK”指向你的 JDK 目录。然后在 Project 里把语言级别设为 17。Eclipse 里在 Preferences → Java → Installed JREs 里添加。VS Code 的话装 Java 扩展包然后在settings.json里配java.home。这些配置和系统环境变量是独立的但建议保持一致避免混乱。8. 我踩过的坑与实操心得第一个坑是路径带空格。我早期把 JDK 装在C:\Program Files\Java\jdk-17结果用某个老版本 Ant 构建时一直报路径错误换成D:\soft\jdk17就好了。所以现在不管装什么开发工具我都放无空格路径。第二个坑是JAVA_HOME和 Path 搞混。有次帮同事排查他把JAVA_HOME设成了bin目录Path 里又加了一遍bin结果 Maven 报错。后来统一成JAVA_HOME指根目录、Path 指%JAVA_HOME%\bin问题消失。第三个坑是安装程序自动配的 Path 和手动配的冲突。exe 安装版有时会往 Path 里写绝对路径后来我手动加了%JAVA_HOME%\bin两个路径同时存在切换版本时旧路径还在导致版本不对。解决办法是装完后检查 Path把自动加的绝对路径删掉只留%JAVA_HOME%\bin。第四个坑是命令行窗口没重启。配完环境变量后在旧窗口里怎么试都不对新开一个就好了。这个坑虽然小但新手很容易卡住所以每次配完都提醒自己新开窗口再验证。最后一个心得如果你只是临时用一下 JDK17不想改系统环境变量可以在命令行里临时设置set JAVA_HOMED:\soft\jdk17和set Path%JAVA_HOME%\bin;%Path%这样只对当前窗口生效关掉就恢复。这种方式适合测试不适合长期使用。装 JDK17 这件事说难不难说简单也不简单。关键是把环境变量这一环理解透后面不管装 Maven、Gradle 还是 Tomcat都是同样的套路。希望这篇内容能帮你少走点弯路一次配通。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询