1. 为什么要在Win10上安装JDK 11先搞懂这些再动手如果你刚开始学Java或者准备把手头的项目升级到更新的Java版本那么JDK 11绝对是一个绕不开的“明星选手”。我自己在项目里从JDK 8升级到JDK 11的时候也花了不少时间研究今天就把我踩过的坑和总结的经验用最直白的话分享给你。首先你得知道JDK是啥。简单来说JDK就是Java开发工具包你想写Java程序、编译Java代码没它不行。它就像你做饭需要的全套锅碗瓢盆和食材。而JRE是Java运行时环境如果你的程序写好了只想在别人的电脑上运行那只需要安装JRE就行它相当于一个“厨房”能让你做好的“饭菜”Java程序跑起来。从JDK 9开始Oracle调整了发布策略一个很重要的变化就是安装包默认不再包含一个独立的JRE文件夹。这对很多习惯了老版本比如JDK 8的开发者来说一开始会有点懵觉得“我的JRE去哪了”。别急后面我会详细教你怎么自己生成一个其实很简单。那为什么我推荐你现在就用JDK 11呢第一它是长期支持版本。你可以把它理解成一个“稳定版”官方会提供长时间的技术支持和安全更新用起来更放心特别适合企业项目或者长期学习。第二它带来了很多实用的新特性比如更简洁的启动单文件程序、更好的性能还有对现代HTTP/2的原生支持HttpClientAPI写网络应用会更顺手。虽然现在JDK的版本号已经更新到二十几了但JDK 11作为经典的LTS版本依然是目前生产环境中最主流、最稳妥的选择之一。所以无论你是Java新手准备搭建第一个开发环境还是老手想升级工具链这篇针对Windows 10的JDK 11安装配置指南都会手把手带你走一遍。我会尽量把每一步的原理和操作都讲清楚让你不仅“知其然”还能“知其所以然”以后遇到问题自己也能排查。2. 第一步下载JDK 11安装包选对版本很重要万事开头难下载是第一步但这里有几个关键选择选错了后面可能就会遇到麻烦。首先你得知道去哪下载。最官方的来源当然是Oracle的官网。不过从某个时间点开始Oracle要求下载JDK必须先登录Oracle账户这对一些朋友来说可能有点麻烦。别担心除了官网我们还有非常好的选择——OpenJDK。OpenJDK是Java平台的开源实现由社区和包括Oracle在内的多家公司共同维护。从JDK 11开始Oracle JDK和OpenJDK在功能上已经基本一致。对于学习和一般开发使用我强烈推荐直接使用OpenJDK的构建版本比如Adoptium原名AdoptOpenJDK或微软构建的版本。它们完全免费无需登录下载速度也更快。这里我以Adoptium为例因为它提供了清晰的界面和多种选择。你可以打开浏览器搜索“Adoptium JDK 11”或者直接访问其项目网站。进入下载页面后你会看到几个选项操作系统选择Windows。架构现在绝大多数电脑都是64位的所以选x64。如果你是非常老的电脑可能性很小才需要选x86。版本选择11并尽量选择最新的小版本号比如11.0.22。JVM实现这里通常有HotSpot和OpenJ9可选。HotSpot是Oracle官方的、历史最悠久的JVM兼容性最好绝大多数情况选它就行。OpenJ9是IBM开源的在某些场景下内存占用更优。作为初学者无脑选HotSpot即可。包类型你会看到.msi和.zip。.msi是Windows安装程序双击运行有图形界面引导安装过程会自动处理一些注册表项适合绝大多数用户。.zip是压缩包解压即用更绿色但需要完全手动配置环境变量适合喜欢自定义路径的高级用户。我的建议是如果你是第一次安装直接下载.msi安装包。整个过程就像安装QQ、微信一样简单不容易出错。下载完成后你会得到一个类似OpenJDK11U-jdk_x64_windows_hotspot_11.0.22_7.msi的文件记住它放在哪里了我们马上开始安装。3. 手把手安装JDK 11路径选择有讲究找到你下载好的.msi安装文件双击运行。安装过程本身非常直观但有两个地方需要你留意一下。首先你会看到一个欢迎界面直接点击“Next”。接下来就是最重要的步骤之一选择安装路径。安装程序通常会默认建议安装在C:\Program Files\目录下。对于系统软件放在C盘没问题。但如果你像我一样喜欢把开发工具都集中放在一个非系统盘比如D盘方便管理和备份那么可以点击“Change...”按钮。在弹出的窗口里你可以把路径修改成你喜欢的目录。我个人的习惯是在D盘创建一个Develop文件夹里面再建一个Java文件夹专门放各个版本的JDK。例如你可以设置为D:\Develop\Java\jdk-11。这里有个小技巧路径里尽量不要包含中文和空格。虽然现在的软件对中文路径的支持已经好了很多但为了避免一些潜在的、稀奇古怪的兼容性问题使用纯英文路径是最稳妥的选择。设置好路径后点击“Next”。下一个界面可能会让你选择要安装的组件。对于标准开发保持默认的全选状态即可直接点击“Next”。然后安装程序就会开始复制文件。这个过程很快通常几十秒就完成了。最后点击“Close”结束安装向导。至此JDK的核心文件就已经拷贝到你的电脑里了。但是如果你现在打开命令行输入java -version系统大概率会告诉你“不是内部或外部命令”。这是因为系统还不知道你刚刚安装的Java命令在哪里。接下来我们就需要通过配置“环境变量”来告诉系统这个位置。4. 配置环境变量让系统认识你的Java命令环境变量听起来有点技术性但其实你可以把它理解成系统的“通讯录”。当你在命令行里输入一个命令比如java系统会去这个“通讯录”里查找这个命令对应的程序文件在哪里。我们的任务就是把JDK里bin目录的地址写到这个“通讯录”里。具体操作步骤如下跟着我做一步都不会错打开环境变量设置窗口 在Windows 10的搜索框里或者按Win S键输入“环境变量”然后选择“编辑系统环境变量”。这会打开“系统属性”窗口并定位到“高级”选项卡。点击右下角的“环境变量(N)...”按钮。新建JAVA_HOME变量关键步骤 在打开的“环境变量”窗口中下半部分是“系统变量”这里设置的变量对所有用户都有效。我们点击“新建...”。变量名(N)输入JAVA_HOME。这个名字是约定俗成的很多Java相关的工具比如Maven、Tomcat都会读取这个变量来定位你的JDK。变量值(V)这里需要填入你刚才安装JDK的完整路径。如果你记不清了可以打开文件资源管理器进入你安装的目录比如D:\Develop\Java\jdk-11然后点击地址栏复制整个路径粘贴到这里。 完成后点击“确定”。这一步相当于在通讯录里登记了JDK的“家庭住址”。编辑Path变量添加执行路径 在“系统变量”列表里找到名为Path的变量不区分大小写选中它然后点击“编辑...”。Windows 10的Path变量编辑界面是一个列表非常清晰。 点击“新建”然后在出现的新行中输入%JAVA_HOME%\bin。 这里%JAVA_HOME%是一个引用它会被替换成你上一步设置的JDK路径。所以%JAVA_HOME%\bin实际上就指向了D:\Develop\Java\jdk-11\bin这个目录而java.exe、javac.exe这些关键命令都在这个bin目录下。 输入完毕后建议你点击“上移”按钮把这个新条目移动到列表的最顶部。这不是必须的但可以确保系统优先使用我们配置的JDK避免和电脑里可能存在的其他旧版本Java产生冲突。最后一路点击“确定”关闭所有窗口。环境变量配置的原理为什么配置了JAVA_HOME还要配置PathJAVA_HOME是一个“指针”它只记录了JDK的根目录。而Path变量则告诉系统当我要执行一个命令时应该去哪些目录里找可执行文件。我们把%JAVA_HOME%\bin加入Path就等于告诉系统“以后你在任何地方运行java或javac命令时请先到我指定的那个JDK目录下的bin文件夹里找找看。”5. 验证安装用命令行测试是否成功配置完环境变量后最重要的一步就是验证。我们需要打开一个新的命令行窗口来测试因为环境变量的更改需要重启命令行才能生效。按下Win R键输入cmd然后按回车打开命令提示符。在这个黑框框里我们依次输入三个命令来检查检查Java运行时版本输入java -version然后回车。 如果配置成功你会看到类似下面的输出信息openjdk version 11.0.22 2024-01-16 OpenJDK Runtime Environment Temurin-11.0.227 (build 11.0.227) OpenJDK 64-Bit Server VM Temurin-11.0.227 (build 11.0.227, mixed mode)这明确显示了你的JDK版本是11.0.22并且是OpenJDKTemurin是Adoptium的发行版名称。看到这个说明java命令已经可以正常工作了。检查Java编译器输入javac -version然后回车。 成功的输出会是javac 11.0.22javac是Java编译器用来把.java源代码文件编译成.class字节码文件。这个命令也能运行才意味着你的开发环境是完整的。运行一个简单命令输入java然后回车。 这个命令不带参数会输出Java命令的帮助信息列出所有可用的选项。如果出现一大串英文说明而不是“找不到命令”的错误那就再次证明了环境变量配置正确。如果出错了怎么办最常见的错误是“不是内部或外部命令也不是可运行的程序”。别慌按这个顺序排查检查路径回到环境变量设置双击JAVA_HOME确认里面的路径完全正确并且这个路径下确实有bin文件夹。检查Path确认Path变量里添加的条目是%JAVA_HOME%\bin并且没有拼写错误。重启命令行每次修改环境变量后必须关闭所有已打开的命令行窗口重新开一个新的设置才会生效。检查旧版本残留如果你电脑上以前装过其他版本的Java有可能在Path变量的其他位置比如C:\Program Files (x86)\Common Files\Oracle\Java\javapath存在旧的Java路径。你可以把这些旧的、指向其他Java版本的路径条目暂时删除或注释掉避免干扰。6. 解决JDK 11的“JRE消失”问题手动生成JRE指南正如开头提到的从JDK 9开始安装后的目录里你看不到一个独立的jre文件夹了。这可能会让一些依赖于传统JRE路径的旧版软件比如一些古老的桌面工具或教学软件找不到运行时环境。其实JDK 11本身包含了生成JRE的所有必要组件我们只需要动动手自己“造”一个出来。为什么需要手动生成JRE现代Java引入了模块化系统JPMS。JRE本质上就是JDK中用于运行程序的那部分模块的子集。Oracle不再预打包这个子集而是把选择权交给了开发者。你可以根据需要生成一个只包含你程序所需模块的精简JRE这能让分发出去的软件包体积更小。生成JRE的步骤其实非常简单只需要一条命令。打开命令提示符CMD关键是要用管理员身份运行因为可能会涉及到在程序安装目录创建文件夹。定位到你的JDK安装目录 在命令提示符里使用cd命令切换到你的JDK根目录。例如如果你的JDK安装在D:\Develop\Java\jdk-11就输入cd /d D:\Develop\Java\jdk-11注意空格和反斜杠。/d参数允许你切换不同驱动器。执行生成JRE的命令 在JDK根目录下输入以下命令并回车bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre我来解释一下这条命令在干什么bin\jlink.exe调用JDK自带的一个名为jlink的工具它就是专门用来生成自定义运行时镜像的。--module-path jmods告诉工具Java的模块文件.jmod都在当前目录的jmods文件夹里。--add-modules java.desktop指定要包含的模块。java.desktop是包含AWT、Swing等图形界面组件的核心模块对于大多数需要JRE的桌面软件来说这个模块是必须的。如果你的软件还需要其他功能比如数据库连接可能需要添加更多模块例如java.sql。--output jre指定输出目录的名字。执行后它会在当前目录也就是你的JDK根目录下创建一个名为jre的新文件夹。等待完成 命令执行只需要几秒钟。完成后你再去JDK的安装目录看看是不是多了一个jre文件夹进去看看里面有bin、lib等子目录一个完整的JRE就诞生了。现在那些需要指定JRE路径的软件你就可以将这个新生成的jre文件夹的路径例如D:\Develop\Java\jdk-11\jre配置给它们了。这个方法比去单独下载一个旧的JRE要安全、匹配得多因为它完全是从你当前JDK版本中派生出来的保证了百分之百的兼容性。7. 进阶技巧与常见问题排坑指南环境配好了JRE也生成了基本工作就完成了。但根据我的经验还有一些细节和常见问题值得你了解这能让你以后少走弯路。关于CLASSPATH变量如果你搜索一些比较老的JDK安装教程特别是JDK 8及以前的它们一定会让你配置一个叫CLASSPATH的环境变量。但在JDK 11及以后的版本中你完全不需要手动配置CLASSPATH。现代Java的类加载机制已经足够智能能够自动找到JDK自带的类库rt.jar,tools.jar等。手动配置一个错误的CLASSPATH反而可能引起“类找不到”的错误。所以请忘记这一步。管理多个JDK版本随着学习深入你可能需要在同一台电脑上安装多个JDK版本比如同时有JDK 8和JDK 11用于测试不同项目。这时候JAVA_HOME的灵活性就体现出来了。你不需要反复修改Path变量只需要更改JAVA_HOME的值将其指向你当前想用的那个JDK版本的安装路径即可。有些高级用户会写一个简单的批处理脚本.bat来动态切换JAVA_HOME或者使用第三方版本管理工具但对于初学者手动改一下JAVA_HOME已经足够方便。安装路径的权限问题如果你把JDK安装在了C:\Program Files这类受系统保护的目录有时在命令行里执行某些Java命令尤其是需要生成文件的命令可能会因为权限不足而失败。如果遇到这种情况可以考虑以管理员身份运行命令行或者像我之前建议的将JDK安装到用户目录如D:\Develop下可以避免很多权限相关的麻烦。检查环境变量是否被覆盖有时候即使你正确配置了命令仍可能出错。一个隐藏的“坑”是某些软件特别是某些国产软件或游戏在安装时可能会在Path变量的最前面插入它们自己的Java路径通常是旧的JRE。你可以打开Path变量仔细从上到下检查确保没有其他路径比如包含javapath的路径指向一个旧的、不完整的Java环境。如果有可以将其删除或者确保我们添加的%JAVA_HOME%\bin位置在它之前。最后当你成功在命令行里看到java -version输出版本号时恭喜你你的Java开发环境已经正式搭建完毕。接下来你就可以打开任何一个文本编辑器比如Notepad、VS Code开始编写你的第一个HelloWorld.java程序然后用javac编译用java运行真正踏上Java开发之旅了。这个过程本身就是对你刚才所有配置工作的一次完美检验。如果在后续使用中遇到任何问题回头检查一下这几个关键点路径、环境变量、命令行重启问题大多都能迎刃而解。