简介:本资源为Oracle官方发布的JDK 11.0.12长期支持(LTS)正式版Windows 64位安装包,专为Java开发者、高校教学及企业级生产环境设计,解决Java 11开发环境快速部署、版本合规性与安全更新保障等核心需求。压缩包共424个文件,含83个DLL动态库(支撑JVM运行)、72个LICENSE/COPYRIGHT法律文件(确保合规使用)、72个JMOD模块文件(支撑Java平台模块化系统Jigsaw)、40个EXE可执行工具(如javac、java、javadoc等)、36个Markdown格式说明文档,以及关键配置文件如jvm.cfg、cacerts、classlist等,全面覆盖编译、调试、运行与安全配置所需组件,总大小154.12MB。已有2352人学习下载,资源结构完整、目录规范,开箱即用,无需额外依赖;配套info.txt提供清晰安装指引与系统要求,适合Java初学者搭建标准开发环境,也满足中高级开发者对LTS版本稳定性、HTTP Client API及ZGC早期支持等特性的实践验证需求。 最近给一台新配的Windows x64开发机搭Java环境,下载的正是标题里这个包:jdk-11.0.12 windows-x64_bin.rar。说实话这个包名我在实际工作里见过很多次,也帮同事排查过不少从这里起步的坑。JDK 11是目前生产环境里出现频率相当高的长期支持版本,而这篇文章就围绕jdk11下载、jdk11下载安装包的选择、安装和验证,把完整流程和踩坑经验一次讲透。
不管你是刚转Java想装第一个JDK的新手,还是被“java不是内部或外部命令”折腾到崩溃的开发,这篇文章都适用。我会从版本背景、下载选型、安装配置、验证对接、常见问题几个维度展开,尽量做到看完就能上手。
1. JDK 11为什么值得装:版本背景与选型思路
1.1 JDK 11的LTS地位与生命周期
JDK 11是2018年9月发布的长期支持版本,也就是大家常说的LTS。按Oracle后来的发布节奏,LTS版本每三年出一个,JDK 11刚好卡在JDK 8和JDK 17之间。很多老项目从JDK 8升级,第一站就是JDK 11,因为Spring Boot 2.x、主流中间件、大数据组件对JDK 11的兼容性已经非常成熟,而直接跳到JDK 17在某些老框架里又容易遇到模块化权限问题。
11.0.12这个版本号,是Oracle在2021年7月发布的季度补丁版本,属于Java 11系列的PSU。这类补丁版本主要修复安全漏洞、JVM底层缺陷和少量回归问题,整体稳定性比初版11.0.0高不少。如果公司规定用JDK 11,并且没有指定具体小版本,选11.0.12之后的版本基本不会出大问题。
我见过不少团队直接拿网上随便下的“绿色版JDK”用,版本号五花八门,有11.0.2也有11.0.7,用起来可能没问题,但一旦遇到安全合规审计会很难交代。所以只要是能用官网正式版,尽量别用来路不明的包。
1.2 11.0.12这个版本包含哪些更新
从实际使用角度看,11.0.12相比早期小版本,最值得关注的是两件事:安全补丁和JVM稳定性修复。JDK 11系列从初版到11.0.12更新了几十个安全漏洞,涉及TLS、序列化、JNDI等常见攻击面。对于一个要长期跑业务的系统来说,这种安全修复比新功能重要得多。
另外,针对Windows平台的修复也不少。比如某些Windows版本的线程栈处理、文件系统路径解析、字体渲染等问题,在11.0.12里都有不同程度的改善。如果你之前用JDK 11早期版本在Windows上遇到过奇怪的原生方法崩溃,升级到11.0.12大概率能缓解。
JDK 11本身在功能层面的变化也值得一提:首个正式包含HttpClient的版本,也就是java.net.http包;支持用java命令直接运行单个.java源码文件;新增ZGC垃圾收集器、Epsilon GC等实验性功能;同时移除了Java EE相关模块和CORBA。这些变化对写业务代码的人来说体感可能不明显,但对运维和架构选型影响很大。
1.3 windows-x64平台意味着什么
包名里的“windows-x64”很好理解,就是面向64位Windows系统。x64在Windows里通常对应x86_64或AMD64架构,现在绝大多数Windows 10、Windows 11系统都是64位,新电脑基本没有32位系统了。
下载前建议先确认系统类型,不是所有Windows都支持64位JDK。右键“此电脑”选“属性”,系统类型里会明确写“基于x64的处理器”还是“基于x86的处理器”。如果是x64系统,装windows-x64版完全没问题;如果是x86系统的老机器,那这个包装不了,得找32位对应的版本。
2. 下载前准备:系统确认与安装包选型
2.1 快速确认Windows系统架构
除了右键“此电脑”看属性,我更常用命令行的方式,因为快且直观。按Win+R输入cmd回车,然后执行:
systeminfo | findstr /C:"系统类型"输出如果是“系统类型: x64-based PC”,那就是64位系统。也可以执行:
echo %PROCESSOR_ARCHITECTURE%输出AMD64或x64都表示64位,输出x86表示32位。这两条命令在排查环境问题时经常用到,建议记一下。
还有一个容易忽略的点:64位系统可以跑32位软件,但32位系统跑不了64位JDK。如果你拿到的机器是Windows Server且内存超过4GB,几乎可以肯定是64位系统,放心装。
2.2 .rar包和官网.zip/.exe到底什么关系
这里要讲清楚一个很多人不知道的细节。大家手里这个“jdk-11.0.12 windows-x64_bin.rar”,大概率不是Oracle官网直接生成的原始安装包。Oracle官网对JDK 11 Windows x64提供的下载文件其实只有两个:
- jdk-11.0.12_windows-x64_bin.zip,压缩包,解压即用
- jdk-11.0.12_windows-x64_bin.exe,安装向导程序
那.rar是哪来的?本质上就是有人把官网的zip解压后,再用WinRAR二次打包。好处是压缩率可能更高一点,坏处是没法和官网文件校验对应,安全性存疑。所以拿到.rar后,我建议先做两件事:看压缩包大小是否和官网zip接近,看解压后目录结构是否包含bin、conf、lib、jmods等标准目录。
如果只求省事,我个人的习惯是优先用官网的.zip版。zip版是“绿色形态”,解压到任意目录就能用,系统重装后还能复用,不污染注册表。.exe安装版适合不喜欢手动配环境变量的新手,安装器会自动写注册表,卸载也方便。
另外提醒一句,Windows系统原生不支持解压rar格式,需要装7-Zip、Bandizip或WinRAR。7-Zip完全免费,Bandizip免费版也够用,这两个都支持解压rar。
2.3 官网下载的完整路径与注意事项
Oracle官网JDK 11下载页地址是:
https://www.oracle.com/java/technologies/downloads/#java11页面里选择Windows x64,就能看到zip和exe两个下载链接。注意页面会先要求你勾选“同意许可协议”,然后跳转到登录页,需要注册Oracle账号才能下载。这个账号限制是很多人卡住的地方,尤其是公司网络环境下,注册邮箱验证还可能比较慢。
如果不想注册账号,可以改用OpenJDK构建版,比如Adoptium项目(也就是Eclipse Temurin),版本号同样有11.0.12,许可证是GPL+CE,商用也友好。区别在于包名不叫jdk-11.0.12_windows-x64_bin,而是类似OpenJDK11U-jdk_x64_windows_hotspot_11.0.12_7.zip。功能层面日常开发基本无感。
还有一个常见坑:不要从无认证的下载站下“一键安装版JDK”。这些平台经常篡改文件,捆绑推广软件,甚至植入脚本。之前有同事图省事,装完发现默认首页被改,浏览器多了一堆插件,排查半天才找到源头是JDK安装包里的前置脚本。这不是危言耸听,确保包来源正规是安装环境的第一步。
3. 安装与配置:从解压到环境变量设置全流程
3.1 安装目录的选择与路径规范
不管用zip还是rar,解压之前先想好目录。我强烈建议放在一个纯英文、无空格、无中文的路径下,比如:
- C:\Java\jdk-11.0.12
- D:\Java\jdk-11.0.12
不要放C:\Program Files\Java\jdk-11.0.12这种带空格的路径,虽然Oracke安装器默认就是这个路径,在大多数场景也能用,但某些老版本的Maven插件、批处理脚本、自动化部署工具处理带空格的路径时会报错,排查起来极其痛苦。
如果是exe安装,安装向导里可以自己修改安装目录。我的做法是统一装到C:\Java,这样后续配环境变量、找路径都方便。目录名建议只带版本号,不要加“最新”、“下载”之类的中文后缀,以免后续脚本解析出错。
另外,如果拿到的是zip或rar,解压后务必确认根目录下有没有bin目录。有时候下载的是精简版或JRE包,解压后没有javac.exe,后面编译Java代码就会报错。这个问题在常见问题章节会再展开。
3.2 安装过程中的几个选项
用exe安装器安装JDK 11时,会弹出几个选择项,常见的包括:
- 是否安装公共JRE(Public JRE)
- 是否安装源代码
- 是否安装额外功能,比如Java Development Kit的辅助功能
我的建议是:如果只是做开发,公共JRE可以不勾选,因为JDK目录里自带了完整的运行时。如果要做服务器部署,想单独给Java应用提供运行环境,可以勾选公共JRE。源代码一般不用勾选,JDK目录里自带src.zip已经够用了,IDE里查看源码时会直接引用。
这里顺便提一个JDK 11的进阶点:从JDK 9开始引入的jlink工具,可以按需生成精简运行时镜像。比如你只需要java.base模块,可以执行:
jlink --module-path %JAVA_HOME%\jmods --add-modules java.base --output C:\java\jre-min生成出来的目录可能只有30MB左右,比完整JRE小非常多,部署到Docker镜像里很香。这个属于锦上添花,不急着现在学,但知道有这个东西就行。
3.3 环境变量配置(这篇的核心之一)
配置环境变量是整个安装过程里最出问题的地方,也是“java不是内部或外部命令”的头号来源。分三步走:
- 右键“此电脑” -> 属性 -> 高级系统设置 -> 环境变量。
- 在“用户变量”或“系统变量”里新建JAVA_HOME,变量值填JDK根目录。比如我装在C:\Java\jdk-11.0.12,就填C:\Java\jdk-11.0.12。
- 找到Path变量,点击编辑,新建一行,填入%JAVA_HOME%\bin,确认保存。
为什么用%JAVA_HOME%\bin而不是写死C:\Java\jdk-11.0.12\bin?因为以后切换JDK版本时,只需要改JAVA_HOME这一个变量,Path完全不用动。这算是Java开发者约定俗成的规范,也是很多教程要求统一配置的原因。
关于classpath,这里多说一句。很多老教程会让你新建CLASSPATH=.;%JAVA_HOME%\lib,这是JDK 1.4时代的老经验。JDK 1.5之后classpath就不是必须的,JDK 9引入模块化之后,盲目配置classpath反而可能干扰应用启动。所以现代开发环境,classpath不用配,配了可能给自己找麻烦。
配置完环境变量后,一定记得新开一个cmd窗口,不要用之前打开的旧窗口。Windows的环境变量是在进程启动时读取的,已经打开的窗口不会自动同步新配置。这个问题几乎每周都能在群里看到人问。
3.4 system变量与用户变量的取舍
环境变量界面里有两栏,上面是用户变量,下面是系统变量。用户变量只对当前Windows登录用户生效,系统变量对所有用户生效。
日常开发机,配置用户变量就够,不需要碰系统变量。系统变量的修改需要管理员权限,而且影响面大,如果一台机器有好几个用户,改系统变量会影响所有人。如果是给CI服务器或多人共用的构建机配环境,再考虑系统变量。
还有个细节:用户变量和系统变量里如果都有Path,最终生效的Path是两者拼接的结果,系统变量在前还是用户变量在前,不同Windows版本可能有差异。这个顺序直接影响java -version显示的版本,后面常见问题里会提到。
4. 验证安装与开发环境对接
4.1 命令行验证是否成功
配置完环境变量,新开一个cmd窗口,依次执行以下命令:
java -version javac -version echo %JAVA_HOME% where java where javac预期输出:
- java -version 会显示 java version "11.0.12" 2021-07-20 LTS
- javac -version 会显示 javac 11.0.12
- echo %JAVA_HOME% 会显示C:\Java\jdk-11.0.12
- where java和where javac会显示完整路径,比如C:\Java\jdk-11.0.12\bin\java.exe
只要这些命令正常,JDK 11的安装就算完成了。这里有个小技巧:执行where java后,如果列出的路径不是JAVA_HOME指向的路径,说明Path顺序有问题,需要按后文的排查方法处理。
4.2 与IDE和构建工具对接
命令行验证通过后,还需要让IDE和构建工具认到这个JDK。
IntelliJ IDEA里这样配置:File -> Project Structure -> Project SDK -> 点击Add JDK,选择C:\Java\jdk-11.0.12目录;然后再把Project语言级别设置为11。Maven项目的pom.xml里建议显式配置编译器版本:
<properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties>Eclipse则是Window -> Preferences -> Java -> Installed JREs -> Add Standard VM,然后选择JDK目录。Gradle项目可以配置:
java { toolchain { languageVersion = JavaLanguageVersion.of(11) } }IDE和构建工具配置的核心逻辑都一样:让它们指向同一个JAVA_HOME,避免“IDE里显示11,命令行里是11,但Maven用的是8”这种分裂状态。
4.3 安装后的目录结构速认
解压或安装完成后,JDK根目录下会看到这样几个关键目录和文件:
- bin,存放java.exe、javac.exe、jar.exe、jlink.exe等可执行工具
- conf,JDK组件运行时的配置文件
- include,JNI相关的C/C++头文件
- jmods,模块镜像文件,JDK 9+模块化机制的载体
- legal,各类开源协议和版权声明
- lib,运行时库和支持文件
- src.zip,JDK源码压缩包,默认自带
这里特别提醒一个变化:JDK 11已经移除了Java EE相关模块,所以老工具链里的wsimport、xjc、javaws等命令在JDK 11里都不存在了。如果是做WebService等老技术栈迁移,要提前做好心理准备。
5. 常见问题与排查技巧实录
5.1 常见问题速查表
| 现象 | 原因 | 解决办法 |
|---|---|---|
| java不是内部或外部命令 | PATH里没有%JAVA_HOME%\bin | 检查环境变量,确保Path包含%JAVA_HOME%\bin,新开cmd |
| javac不是内部或外部命令,但java可用 | 只装了JRE,没装JDK;或JAVA_HOME指向了JRE | 确认JAVA_HOME指向JDK根目录,bin目录下有javac.exe |
| java -version显示旧版本 | Path里老版本JDK或JRE路径排在前面 | 删除旧路径,或将%JAVA_HOME%\bin移动到Path靠前位置 |
| 修改环境变量后不生效 | cmd窗口没有重新打开 | 重新打开一个cmd窗口,不要用老窗口 |
| echo %JAVA_HOME%为空 | 变量没建对或没保存 | 重新打开环境变量界面检查变量名和值 |
| 安装exe时提示需要管理员权限 | UAC限制 | 右键安装程序,以管理员身份运行 |
| 官网下载需要账号 | Oracle账号限制 | 注册账号,或改用OpenJDK构建版 |
| 解压后找不到bin目录 | 下成了JRE包,不是JDK包 | 核对包名,确认是包含javac的JDK包 |
5.2 我实际踩过的几个坑
第一个坑是Path顺序问题。有一段时间我机器上同时装了JDK 8和JDK 11,JAVA_HOME已经改成11,但Path里旧JDK 8的bin路径排在前面,导致cmd里执行java -version永远是1.8。后来把旧路径从Path里删掉,只在Path里保留%JAVA_HOME%\bin,问题彻底解决。经验就是:一台开发机尽量只保留一个JDK,非要用多版本,用IDE的SDK切换,别在系统Path里堆叠多个JDK路径。
第二个坑是中文目录。有次图省事把解压出来的JDK放在D盘“开发工具\jdk-11”这样的目录下,IDE正常,但一个老项目用的Ant脚本死活报“无法识别的字符”。排查半天才发现是路径里的中文闹的。从那以后,所有开发工具一律放纯英文路径,省心。
第三个坑是.rar包内容的完整性。曾经有人把JRE目录伪装成JDK打包上传,解压后bin目录里只有java.exe,没有javac.exe,结果编译时全军覆没。所以拿到任何非官方压缩包,先看一眼bin目录里有没有javac.exe,这是判断“真JDK”的标志性文件。
5.3 卸载与版本切换
如果是用exe安装的JDK,卸载路径在“设置 -> 应用”里搜索“Java SE Development Kit 11.0.12”,然后卸载。如果是zip或rar解压版,直接删除整个目录,再清理JAVA_HOME和Path里的对应条目即可。
版本切换的核心思路只有一个:JAVA_HOME指向哪个版本,就是哪个版本。前提是Path里只保留%JAVA_HOME%\bin,而不是一堆写死的路径。切换时只需要修改JAVA_HOME的值,然后新开cmd窗口验证java -version。如果你还在用写死路径的方式管理多个JDK,建议趁早改成这种方式,后面会少很多麻烦。
6. 顺手再做的几个小配置
6.1 确认防火墙与安全软件不拦截java.exe
Windows Defender或者第三方安全软件有时会把新解压的java.exe、javac.exe当作未知程序拦截。如果安装完一切正常,但过几天启动项目时莫名报“拒绝访问”,可以去Windows安全中心的历史记录里看看有没有拦截记录。遇到这种情况,把JDK目录加入排除项即可。
6.2 保存一份版本信息到项目文档
这个习惯很小,但实用。在项目README或者环境说明文档里,明确写上JDK版本是11.0.12,安装目录是C:\Java\jdk-11.0.12,JAVA_HOME配置方式是什么。对于团队协作来说,这个信息能省一半排障时间。我之前接手一个老项目,连同事装的JDK是32位还是64位都不知道,后来靠环境文档才理顺。
6.3 把src.zip备份到方便的位置
JDK目录里的src.zip就是JDK源码,IDE里点类名跳转到源码时会用到。默认位置没问题,但如果你隔段时间要清理磁盘、移动目录,记得别把src.zip当垃圾文件删了。没有src.zip,调试Java源码时只能看反编译结果,排查问题效率会打折扣。
我个人在实际操作中的体会是:JDK 11的安装在2021年之后已经算很成熟的事情了,真正容易翻车的地方从来不是安装本身,而是路径规范、环境变量刷新、多版本冲突这些“小细节”。把基础工作做扎实,后面所有Java相关的开发工具链都会顺畅很多。
本文还有配套的精品资源,点击获取