Java 官网下载这个关键词,一年到头搜索量就没低过。原因很简单:不管你是想学 Java、准备面试、搭 Spring Boot 项目,还是只是为了跑一个需要 Java 环境的工具,第一步永远是装 JDK。可就是这么个看似简单的步骤,卡住过的人不在少数——版本选不对、官网找不到入口、环境变量配不明白、装完 java 版本和教程对不上,任何一个环节都能折腾半天。
这篇教程我会按照实际动手的顺序来写:先帮你搞清楚该装哪个版本、Oracle JDK 和 OpenJDK 什么区别、那些“网盘流传版”到底能不能用;然后一步步带你把官网下载、双击安装、环境变量配置全走一遍;最后再整理安装过程中最常见的报错和排查思路。零基础的同学可以照着抄,装过但总出问题的同学也能从原理层面彻底搞明白。
1. 安装 Java 前先想清楚:要装哪个 JDK,怎么选版本
很多人一上来就搜“Java 官网下载”,结果页面一打开就懵了:又是 Java 8,又是 Java 11,还有 17、21,到底下载哪个?这里先把版本相关的几件事理清楚,这一步想明白了,后面安装基本不会跑偏。
1.1 JDK、JRE、JVM 到底是什么关系
这三者的关系几乎是所有 Java 学习者第一个接触的基础概念,但很多教程只给了结论没给解释。简单说:
- JVM(Java Virtual Machine):Java 虚拟机,负责把编译后的字节码翻译成当前操作系统能执行的机器指令。跨平台靠的就是它。
- JRE(Java Runtime Environment):Java 运行环境,包含 JVM 和 Java 核心类库。装了它只能运行 Java 程序,不能开发。
- JDK(Java Development Kit):Java 开发工具包,里面包含了 JRE,还额外提供了 javac(编译器)、jar(打包工具)、javadoc(文档工具)等一系列开发工具。
打个比方:JDK 是一套完整的厨房,灶台、锅碗瓢盆、食材都有,你想怎么折腾都行;JRE 相当于一个微波炉,只能把现成饭菜热一热;JVM 则是厨房里那个关键设备。日常学习、开发、看面试题肯定要装 JDK,光装 JRE 是没法写代码的。
1.2 版本怎么选:Java 8、11、17、21
大多数新手纠结的其实不是 JDK 和 JRE,而是具体版本。这里我按实际使用场景给个选型思路:
| 版本 | 性质 | 适用场景 | 说明 |
|---|---|---|---|
| Java 8(1.8) | 长期支持版(LTS) | 大量老项目、传统企业、部分教材 | 目前存量最大,很多生产环境还在用 |
| Java 11 | 长期支持版(LTS) | 过渡版本 | 相比 8 增加了很多新特性,但直接选它的新项目不算多 |
| Java 17 | 长期支持版(LTS) | 新项目主力 | Spring Boot 3 强制要求,Java 8 之后最值得迁移的版本 |
| Java 21 | 长期支持版(LTS) | 最新特性尝鲜 | 引入了虚拟线程等重量级特性,适合新项目或学习新语法 |
我的建议很直接:如果你只是跟着网上的教程学 Java 基础,先看教程用什么版本,尽量保持一致,否则后面某些写法编译报错会很打击信心。如果你是准备找工作,先查目标公司的技术栈,很多公司现在还是 Java 8,但面试会问新特性,所以电脑上装 8 和 17 双版本是常态。如果你是从零开始的新项目,直接 17 起步,没有历史包袱,也不用担心太老。
还有一个重要认知:一台电脑完全可以装多个 JDK 版本,通过环境变量切换就行。所以“选不定版本”这事儿根本不用纠结,先装一个能跑起来,后面随时补装另一个。
1.3 Oracle JDK 和 OpenJDK,别被绕进去
“Java 官网下载”到底下哪个?这个话题连很多老手都容易说混,因为 Java 这门语言的发行版确实有点特殊。
- Oracle JDK:Oracle 官方发布的 JDK,以前最常用。但从 Java 11 开始,Oracle JDK 的商用许可变得严格,直接商用需要付费,个人开发和学习用没问题。
- OpenJDK:JDK 的开源参考实现,是各种免费发行版的基础。像 Eclipse Temurin(Adoptium 社区)、Amazon Corretto、阿里 Dragonwell 等,都是基于 OpenJDK 构建的,可以免费用于商用场景,稳定性也不差。
所以你在网上看到有人争论“Oracle JDK 要收费”的时候,准确说法是:Oracle JDK 在特定商用场景下收费,你自己学习、开发小项目基本不受影响;如果你所在的公司对收费问题敏感,可以采用 OpenJDK 发行版,功能上和 Oracle JDK 几乎一致。
对于初学者,我建议直接去 Oracle 官网下载官方版本,操作路径最清晰,也不会遇到拿不准的问题。
1.4 网上那些“百度网盘 JDK”是哪里来的,能不能用
这个必须单独说一说,因为太多新手手里拿到的都是网盘安装包。这些资源通常是某个开发者把自己电脑上下载好的安装包传到网盘里共享出来的。好处是下载速度快,不用注册 Oracle 账号,传到团队里也方便。但坏处同样明显:版本很可能比较老,不一定跟你的教程匹配;来源不明,安装包理论上存在被二次修改的风险;很多还捆绑了额外的软件,安装时一不小心就会中招。
我的态度是:能官网下载就优先官网。如果因为网络问题或者手上只有网盘资源,也不是完全不能用,但拿到安装包后必须做两件事:用哈希工具校验文件是否被修改过,安装前过一遍杀毒软件。这个校验方法我在第 4.5 节会详细写。至于具体找哪个网盘链接,你可以在搜索时用“JDK 17 安装包 下载”这类关键词找最新共享资源,链接失效了就换一个分享,毕竟这种资源本身就是动态更新的。
2. Java 官网下载完整指南:找到正确的安装包
确定好要装哪个版本之后,下一步就是去官网把安装包拿下来。这一步没什么技术难度,但有几个细节值得展开。
2.1 从哪个入口进,页面长什么样
打开浏览器,直接访问 Oracle 官网的 Java 下载页面,也可以搜索“Java Download”,第一条官方链接点进去就是。下载页面里会默认列出最新版本,比如当前推荐的 LTS 版本 17 和 21;页面下方通常有“Previous Releases”入口,可以找到更早的版本,比如 Java 8。
这里提醒一句:搜索引擎结果里很多标着“Java 下载”的网站其实是第三方下载站,有的下载下来是捆绑软件,有的直接给的是旧版。最靠谱的做法是认准下载页面的域名是 oracle.com,以及页面上出现 Java SE 字样。
2.2 安装包类型:exe 和 msi 有什么区别
在 Windows 平台,下载页面会提供两种安装包:
- Windows x64 Installer(.exe):最常见的安装程序,双击后跟着向导一步步走,可以自选安装路径,个人用户选这个。
- Windows x64 MSI Installer(.msi):微软标准安装包格式,适合企业用组策略批量部署,安装过程更自动化,不提供太多交互选项。
简单理解,exe 是给“人”用的,msi 是给“企业批量部署”用的。个人电脑下载 exe 就行。
另外还有 Windows x64 Compressed Archive(.zip 压缩包),这个不用安装,解压后手动配环境变量就能用,后面 3.3 节单独讲。
2.3 系统架构和位数:x64 还是 ARM64
现在的电脑基本都是 64 位系统,下载 x64 版本即可。如果你用的设备是 Arm 架构(比如部分新出的轻薄本、平板),要选 ARM64 版本。怎么判断自己电脑是哪种架构?在 Windows 设置里搜索“系统信息”,看“系统类型”一栏就行,x64 就是标准 64 位,ARM64 就是 ARM 架构。
这里有一个很多新手会忽略的坑:如果电脑还是 32 位系统,新版本的 JDK 官方基本已经不提供 32 位安装包了。这种情况下最先该考虑的不是找老版本 JDK,而是把系统升级到 64 位,因为现在很多开发工具都已经放弃 32 位支持。
2.4 官网下载让你登录账号,怎么办
Oracle 官网下载部分版本时,尤其是新版 JDK,会要求先登录 Oracle 账号才能下载,这就是很多新手在“官网下载”这一步卡住的主要原因之一。解决办法其实很简单:
- 在登录页面点击“Create Account”,按提示填写邮箱、设置密码,完成邮箱验证即可。
- 登录后重新点击下载链接,安装包就开始下载了。
- 如果实在不想注册账号,可以改用 Adoptium 的下载页获取 OpenJDK,地址是 adoptium.net,页面里选好版本和操作系统,点出来就是一个直接下载的链接,不需要登录,下载体验对新手更友好。
下载过程中如果感觉速度很慢,可能是网络波动导致的。可以等一会儿再试,或者换个浏览器试试,Chrome、Edge 都行。网络状况不佳时,很多人会把官方安装包先下载到网盘再转存分享,这也是前面说的网盘版本的来源之一,只要来源靠谱,版本新,同样可以用。
3. 安装与环境变量配置一步步走
安装包拿到手,准备工作就算结束了。这一章节是重头戏,我会按最常用的 Windows 平台、exe 安装包为例,把整个流程讲透,包括安装选项的含义、环境变量的原理、验证方法,以及 zip 免安装包和 macOS 的补充方案。
3.1 双击安装包后的操作细节
双击下载好的 exe 文件,会弹出安装向导。第一屏是欢迎界面,直接点“Next”。接下来会要求选择安装功能,一般保持默认即可。但有两个选项值得注意:
- “公共 JRE”:这个选项默认是勾选的,实际上 JDK 目录内部已经自带 JRE,如果你不需要用系统全局的公共 JRE,可以把这个功能取消掉,减少不必要的系统组件。
- “Source Code”:源码文件,一般不需要,保持默认不勾选就行。
最关键的一步是选择安装路径。Oracle 默认会装在 C:\Program Files\Java\jdk-17 这样的路径下。我的建议是改成 C:\Java\jdk-17 这种更简洁的路径,路径层级越少,后面配置环境变量、使用各种工具时越不容易出问题。特别注意:
路径中不要包含中文和空格,某些老工具和脚本在解析带空格路径时会报错。
安装完成后默认不会在桌面生成快捷方式,这很正常,别去找图标了。验证是否装好,直接打开命令行窗口。
3.2 JAVA_HOME、PATH、CLASSPATH 的作用和配置步骤
安装好 JDK 只是第一步,系统还不知道去哪找它。环境变量在这里起了“告诉系统去哪找 JDK”的作用。很多教程只让你照着填,不解释为什么,这里我把原理说清楚。
- JAVE_HOME(注意实际变量名是 JAVA_HOME):环境变量的名字一般是大写,指向 JDK 安装根目录。作用是什么?一方面,java、javac 命令通过它能定位到 bin 目录;更重要的是,后面你学 Maven、Tomcat、IDEA,这些工具都会主动去找 JAVA_HOME 这个变量,没有它很多工具直接启动不了。
- PATH:系统搜索可执行文件的目录列表。你希望在命令行任意位置输入 java 都能执行,就必须把 %JAVA_HOME%\bin 加进 PATH。如果不加,就得每次输完整路径 C:\Java\jdk-17\bin\java,太麻烦。
- CLASSPATH:类搜索路径,用来告诉 JVM 去哪些目录找用户自定义的类。JDK 5 以后默认会包含当前目录,日常学习和开发基本不需要手动配置。网上那些老教程让你配 . 和 tools.jar,那是上古时期的做法,现在照做反而可能引发问题,直接忽略。
基于这个原理,配置步骤就非常清晰了:
- 右键“此电脑”→ 属性 → 高级系统设置 → 环境变量。
- 在“系统变量”区域点击“新建”,变量名填 JAVA_HOME,变量值填你的 JDK 安装路径,比如 C:\Java\jdk-17,注意别带 bin,也别带分号。
- 找到名为 Path 的系统变量,双击编辑。在编辑界面里点击“新建”,输入 %JAVA_HOME%\bin,然后把这个条目移动到最顶部。Windows 10/11 的编辑界面是列表形式,直接用“新建”加一条,不要手动写分号,否则容易出错。
- 点击确定保存所有窗口。
配完之后验证一下。重开一个命令提示符窗口(这一步很关键,旧窗口不会刷新环境变量),依次输入:
java -version javac -version echo %JAVA_HOME%如果 java -version 能输出版本号,javac 也能输出版本号,说明环境变量配置成功。如果两个命令都能跑但版本不一样,或者都提示“不是内部或外部命令”,跳到第 4 章查原因。
3.3 用 zip 压缩包做免安装配置
有些场景下,你拿到的不是 exe 安装程序,而是 zip 压缩包。这种包的解压即用模式其实比安装向导更干净,没有写注册表、没有自动配置那些额外动作,非常适合想完全掌控 JDK 目录的用户。
配置步骤也很简单:
- 把 zip 包解压到你想要的目录,比如 C:\Java\jdk-17。
- 打开环境变量设置,新建 JAVA_HOME,指向刚才的解压目录。
- 编辑 Path,新增 %JAVA_HOME%\bin。
- 重开命令行,验证 java -version 和 javac -version。
整个过程就是把第 3.2 节的安装向导步骤替换成了解压,剩下的环境变量逻辑完全一致。这种方式的优势是卸载简单,删掉解压目录、清理环境变量即可;缺点是安装包解压后占用空间稍大,且需要手动配环境变量。
3.4 macOS 和 Linux 环境简要补充
虽然这篇教程主要面向 Windows,但不少读者也会在 macOS 或 Linux 上装 Java,简要提一下。
macOS 下最简单的方式是双击下载的 dmg 安装包按向导操作,安装完成后 Java 会被放进 /Library/Java/JavaVirtualMachines 目录。如果你习惯用 Homebrew,可以执行:
brew install openjdk@17安装完成后终端里可能还需要执行一段提示中的路径配置命令,按终端里的提示来就行。
Linux(以 Ubuntu/Debian 为例)最省事的方案是用包管理器:
sudo apt update sudo apt install openjdk-17-jdk安装完同样用 java -version 和 javac -version 验证。
不管是哪个平台,环境变量的底层逻辑都是相通的:让系统找到 JDK 的 bin 目录。理解了这一点,换平台也就换个配置入口而已。
4. 安装后最常见的报错与排查方法
装 Java 这件事,十个新手九个会在环境变量上栽跟头。我把这些年见到的典型问题和排查思路整理出来,遇到报错直接对号入座。
4.1 “java 不是内部或外部命令,也不是可运行的程序”
这个提示可以说是最经典的 Java 入门第一坑。原因无非四种:
- JDK 确实没装成功或用户下的是 JRE 而非 JDK。
- JDK 装成功了,但 JAVA_HOME 没配或配错。
- JAVA_HOME 配了,但 PATH 里没加 %JAVA_HOME%\bin。
- 以上都配好了,但打开的 cmd 是修改环境变量之前启动的旧窗口。
排查顺序建议:先重开一个 cmd 再试,不行就检查环境变量里 JAVA_HOME 是否指向了 JDK 根目录(不是 bin,不是 jre),再检查 Path 列表里有没有 %JAVA_HOME%\bin。再不行就检查安装目录确实存在 javac.exe,比如 C:\Java\jdk-17\bin\javac.exe。
特别提醒:修改环境变量后一定要重新打开命令提示符窗口,已经打开的旧窗口不会自动加载新变量。
4.2 java -version 显示的版本不对
明明刚装了 JDK 17,运行 java -version 却显示 1.8.0_xxx,这说明系统找到了另一个 Java 程序,而不是你刚装的。最常见的场景是电脑上之前装过旧版 JDK 或者某软件自带了一个 JRE。
排查命令很关键:
where java这个命令会列出所有被 Path 搜索到的 java.exe 路径。你会看到好几条,排在最前面的那个就是系统当前实际调用的。解决办法:把 %JAVA_HOME%\bin 在 Path 里的位置提到最前面,或者把旧的 Java 路径从 Path 中删除。优先级问题说白了就是“谁排在前面谁生效”。
4.3 多版本 JDK 怎么共存和切换
前面说过,同时装多个 JDK 是完全合理的操作,尤其在准备面试的阶段,一边要看 Java 8 的老题,一边要用 17 写新项目。推荐的做法是给每个 JDK 起一个独立的环境变量:
- 系统变量里新增 JDK8_HOME=C:\Java\jdk-8
- 系统变量里新增 JDK17_HOME=C:\Java\jdk-17
- JAVA_HOME 保持动态切换
日常使用时,改 JAVA_HOME 的目标版本即可。如果觉得每次手动改太麻烦,可以写两个批处理脚本放在桌面上,用管理员权限运行:
@echo off setx JAVA_HOME "C:\Java\jdk-17" /M echo Switch to JDK 17, please reopen cmd. pause复制一份改成 JDK 8 的路径即可。用 setx 修改的是系统级变量,需要注意新开的工具(IDEA、Maven)都需要重启才能读到新的 JAVA_HOME。
4.4 IDEA、Maven、Tomcat 报错找不到 JDK
环境变量配好后,后续学习过程中大概率还会在三类工具上遇到问题:
- IDEA 提示 “No JDK found”:打开 File → Project Structure → SDK → Add JDK,手动选择 JDK 安装根目录即可。
- Maven 报 “JAVA_HOME returns invalid directory”:检查 JAVA_HOME 是否指向真实存在的 JDK 目录,且该目录下没有多余的空格或引号。
- Tomcat 启动闪退或报错找不到环境变量:同样优先检查 JAVA_HOME,Tomcat 的启动脚本依赖 JAVA_HOME 去寻找 java 可执行文件。
这三个工具的判断逻辑是一致的:JDK 本身没问题,是这些工具没有拿到正确的路径信息。
4.5 网盘下载的安装包怎么校验哈希
回到第 1.4 节提过的问题:如果手里的安装包来自网盘,装之前一定要校验文件完整性。哈希校验的本质是对文件内容算一段固定长度的摘要,只要内容被改动过,算出来的摘要就完全不同。官网页面通常会列出每个安装包的 SHA256 值,把这个值和本地文件算出来的值对比,一致就说明文件没有被篡改。
Windows 系统用 PowerShell 校验,非常简单。在安装包所在目录打开 PowerShell,执行:
Get-FileHash .\jdk-17_windows-x64_bin.exe -Algorithm SHA256输出的那一长串十六进制数字就是当前文件的实际哈希。去官网找到对应文件的 SHA256,两者完全一致就可以放心安装。如果不一致,建议直接删掉重新下,不要拿自己的时间冒险。
4.6 其他常见问题速查
| 问题现象 | 可能原因 | 解决办法 |
|---|---|---|
| java 能用但 javac 找不到 | PATH 里只有 JRE 路径,缺少 JDK 的 bin | 检查 JAVA_HOME 是否指向 JDK 根目录,重新配置 PATH |
| 安装程序启动不了 | 安装包下载不完整或被杀毒软件拦截 | 重新下载,校验哈希,暂时关闭实时防护后重试 |
| Windows 7 装新版 JDK 失败 | 新版本要求 Windows 10 以上系统 | 换 JDK 8 的旧版本,或升级操作系统 |
| 命令行输入中文路径乱码 | 系统字符集与 Java 默认编码不一致 | 调整 Windows 区域设置中的 Unicode 相关选项 |
实际安装 Java 这一年多来,我自己踩得最深的坑其实不是不会装,而是总拿“能用就行”的心态跳过环境变量原理,结果每次遇到工具找不到 JDK 都得从头查。把这些原理弄懂之后,所有java相关的安装问题基本一眼就能定位。后面你学 Maven、学 Spring Boot、用 IDEA 时,会发现它们全都在读 JAVA_HOME,这就是为什么我在这篇教程里花了这么大篇幅讲环境变量。安装这件事本身并不神秘,但把基础打牢,后面一整条学习路线都会顺很多。