
1. 项目概述为什么JDK 11依然是当下的明智之选如果你刚开始接触Java开发或者正准备将手头的项目升级到更新的Java版本那么“下载、安装、配置JDK”这个看似简单的第一步往往就是第一个拦路虎。网上的教程五花八门有的步骤缺失有的链接失效更别提那些夹杂着各种广告和错误信息的页面了。今天我就以一个老开发的身份带你从头到尾、毫无保留地走一遍JDK 11的安装与环境配置全过程。我选择JDK 11作为示例不是因为它最新恰恰是因为它在“稳定性”、“长期支持LTS”和“新特性”之间取得了绝佳的平衡。Oracle对JDK 11提供长期支持直到2026年这意味着它有足够长的生命周期供企业级应用使用同时它引入了像局部变量类型推断var、全新的HTTP客户端、ZGC垃圾收集器等革命性特性是告别老旧JDK 8、迈向现代Java开发非常坚实的一步。无论你是学生、初学者还是需要为团队统一开发环境的老手这篇详尽的指南都能让你一次搞定避免后续因环境问题带来的各种诡异报错。2. 核心思路与版本选择理解Oracle JDK与OpenJDK在动手下载之前我们必须先理清一个关键概念你下载的到底是什么这直接关系到后续的授权、更新和兼容性。2.1 Oracle JDK与OpenJDK的渊源与现状早年Sun公司后被Oracle收购发布的官方JDK就是Oracle JDK。同时Sun也将JDK开源形成了OpenJDK项目。在JDK 11之前Oracle JDK和OpenJDK在功能上几乎一致但Oracle JDK包含一些额外的商业特性如Java Flight Recorder和不同的授权协议。但从JDK 11开始Oracle做了一个重大调整Oracle不再为“生产环境”的商用提供免费的长期更新。你可以免费下载和使用Oracle JDK 11进行开发和测试但如果你想在生产环境中获得官方的季度安全更新和漏洞修复就需要订阅Oracle的付费支持服务。这就引出了我们当前的最佳实践对于大多数个人开发者、学习者和非商业项目推荐直接使用OpenJDK的构建版本。OpenJDK是开源的其社区构建版本如Adoptium/Temurin、Amazon Corretto、Azul Zulu等完全免费并且提供与Oracle JDK功能完全一致的LTS版本支持包括及时的安全更新。我们今天教程的核心也将围绕如何获取和安装这些优秀的OpenJDK发行版展开。2.2 主流OpenJDK发行版选型建议面对众多OpenJDK发行版该如何选择这里我基于稳定性和社区活跃度给出建议Eclipse Temurin原AdoptOpenJDK/Adoptium这是目前最受社区欢迎的选择之一。由Eclipse基金会管理完全开源提供高质量的、经过TCK技术兼容性工具包认证的构建对各个LTS版本的支持周期非常明确。对于新手和绝大多数场景我首推这个版本。Amazon Corretto亚马逊提供的免费、多平台的OpenJDK发行版。亚马逊承诺为其提供长期支持并保证与Java SE标准的兼容性。如果你在AWS环境部署Corretto是个无缝衔接的好选择。Azul ZuluAzul Systems提供的构建版同样免费支持平台非常广泛包括ARM架构。Azul在JVM领域有深厚的技术积累其构建版本也值得信赖。Microsoft Build of OpenJDK微软维护的发行版在Windows上集成体验可能更好。对于本次安装我们将以Eclipse Temurin JDK 11为例进行演示。它的下载页面清晰版本齐全且没有复杂的商业条款困扰。注意请务必从上述官方或可信的镜像站点下载JDK。切勿从不明来源的小网站下载以免安装包被篡改植入恶意软件。3. 详细实操步骤从下载到安装验证接下来我们进入实战环节。我会分Windows、macOS和Linux三个主流操作系统来讲解请根据你的电脑系统选择对应的部分阅读。3.1 Windows系统安装指南Windows用户数量最多图形化安装也相对直观但环境变量配置是关键。3.1.1 下载安装包打开浏览器访问 Eclipse Adoptium 的官网。找到 JDK 11 的下载页面。在版本选择中找到 “Temurin 11 (LTS)”。在右侧选择你的操作系统Windows和架构通常是 x64除非你用的是非常老的32位电脑或新的ARM电脑。包类型选择 “MSI Installer”。MSI安装包的好处是它能自动为你配置系统环境变量比ZIP压缩包方式更省心。点击下载你会得到一个类似OpenJDK11U-jdk_x64_windows_hotspot_11.0.xx_x.msi的文件。3.1.2 运行安装程序双击下载的.msi文件运行。如果系统弹出用户账户控制UAC提示点击“是”。安装向导启动后点击“Next”。在下一个界面你可以选择安装路径。强烈建议使用默认路径通常是C:\Program Files\Eclipse Adoptium\jdk-11.0.xx.x-hotspot。这样便于统一管理也避免后续配置环境变量时找不到目录。记住这个路径稍后可能会用到。继续点击“Next”安装程序会开始复制文件。安装过程很快通常一分钟内即可完成。安装完成后建议不要立即重启通常也不需要。点击“Finish”关闭向导。3.1.3 配置环境变量关键步骤这是Windows下最重要的一步目的是让系统在任何目录下都能识别java和javac命令。验证安装首先按Win R键输入cmd打开命令提示符。输入java -version并回车。如果你看到类似下面的输出恭喜你安装程序可能已经帮你配好了部分环境变量。openjdk version 11.0.xx 2024-xx-xx OpenJDK Runtime Environment Temurin-11.0.xxxx (build 11.0.xxxx) OpenJDK 64-Bit Server VM Temurin-11.0.xxxx (build 11.0.xxxx, mixed mode)再输入javac -version。如果也能正确显示版本号如javac 11.0.xx那么环境变量已完全配置成功你可以跳过后续配置步骤。手动配置如果需要如果javac命令提示“不是内部或外部命令”则需要手动配置JAVA_HOME和Path。设置JAVA_HOME在桌面或文件资源管理器右键点击“此电脑”选择“属性”。点击“高级系统设置” - “环境变量”。在“系统变量”区域点击“新建”。变量名输入JAVA_HOME。变量值输入你的JDK安装路径例如C:\Program Files\Eclipse Adoptium\jdk-11.0.xx.x-hotspot。务必确保这个路径指向的是JDK的根目录里面有bin、lib等文件夹而不是更深的子目录。更新Path变量在“系统变量”列表中找到Path变量选中并点击“编辑”。点击“新建”然后添加一条新记录%JAVA_HOME%\bin。为了确保优先级你可以使用“上移”按钮将%JAVA_HOME%\bin移动到列表顶部附近。逐一点击“确定”关闭所有窗口。验证配置非常重要关闭之前打开的所有命令提示符窗口。因为环境变量只在新的终端会话中生效。重新打开一个新的命令提示符cmd。依次输入java -version和javac -version。两者都应正确显示JDK 11的版本信息。实操心得在Windows上使用MSI安装器通常能自动配置好java命令的路径即JRE部分但javac编译器JDK部分的路径有时仍需手动通过JAVA_HOME来添加。这就是为什么我们强调要同时检查java和javac两个命令。JAVA_HOME这个变量本身也被很多Java应用如Maven、Gradle、Tomcat、IDE所依赖单独设置它是一举多得的好习惯。3.2 macOS系统安装指南macOS用户可以通过多种方式安装这里介绍最通用的两种手动下载安装包和使用包管理器Homebrew。3.2.1 方式一下载PKG安装包推荐给新手下载同样访问 Eclipse Adoptium 网站选择 macOS 和合适的架构Apple Silicon芯片选aarch64Intel芯片选x64。下载.pkg格式的安装包。安装双击下载的.pkg文件按照图形化向导一步步操作即可安装过程会像安装普通Mac软件一样简单。安装程序会自动将JDK部署到/Library/Java/JavaVirtualMachines/temurin-11.jdk目录下。验证打开“终端”Terminal应用输入java -version和javac -version。如果正确显示Temurin 11的信息则安装成功。macOS的安装包通常会自动处理好路径无需手动配置环境变量。3.2.2 方式二使用Homebrew安装推荐给开发者如果你已经安装了HomebrewmacOS上强大的包管理器那么安装JDK将变得异常简单和统一。查找可用版本在终端中执行brew search openjdk你可以看到所有可用的OpenJDK版本。安装Temurin 11执行以下命令brew install --cask temurin11命令中的--cask表示这是一个需要图形化安装的软件包如浏览器、编辑器对于JDKHomebrew会下载pkg并自动安装。验证安装完成后重启终端或打开一个新的终端标签页输入java -version验证。注意事项在macOS上可能会预装旧版本的Java。通过上述方式安装后新JDK的路径会自动加入系统环境。如果遇到命令冲突可以通过export PATH命令临时调整路径或使用jenv这类工具来管理多个JDK版本。3.3 Linux系统安装指南Linux发行版众多安装方式也多样。这里以最常见的基于Debian/Ubuntu和基于RHEL/CentOS/Fedora的发行版为例。3.3.1 通用方法下载压缩包配置适用于所有发行版这种方法最直接不依赖特定的包管理器。下载从Eclipse Adoptium网站下载对应Linux架构的.tar.gz压缩包例如x64 Linux。解压打开终端切换到下载目录使用tar命令解压到你想要的目录通常建议是/usr/lib/jvm或/opt下。sudo mkdir -p /usr/lib/jvm # 如果目录不存在则创建 sudo tar -xzf OpenJDK11U-jdk_x64_linux_hotspot_11.0.xx_x.tar.gz -C /usr/lib/jvm解压后会生成一个类似jdk-11.0.xxxx的文件夹。配置环境变量编辑当前用户的~/.bashrc文件如果你使用Bash或~/.zshrc如果你使用Zsh。nano ~/.bashrc在文件末尾添加以下内容请根据实际路径修改export JAVA_HOME/usr/lib/jvm/jdk-11.0.xxxx export PATH$JAVA_HOME/bin:$PATH保存并退出编辑器。使配置生效执行source ~/.bashrc让配置立即在当前终端生效或直接关闭终端重新打开。验证执行java -version和javac -version。3.3.2 使用包管理器安装以Ubuntu为例对于Ubuntu及其衍生版可以使用apt安装OpenJDK。更新包索引sudo apt update安装JDK 11sudo apt install openjdk-11-jdk验证安装完成后系统已自动配置好。直接运行java -version检查。对于RHEL/CentOS/Fedora可以使用yum或dnfsudo dnf install java-11-openjdk-devel。踩坑提醒在Linux上通过包管理器安装的OpenJDK其安装路径可能比较分散例如java命令在/usr/bin而库文件在别处。JAVA_HOME通常会被自动设置为像/usr/lib/jvm/java-11-openjdk-amd64这样的路径。如果不确定可以使用update-alternatives --config java命令来查看和管理系统默认的Java版本并从中找到JAVA_HOME的路径。4. 集成开发环境IDE配置验证安装配置好系统环境后我们还需要确保IDE能正确识别并使用这个JDK。这是将环境投入实际开发的关键一步。4.1 IntelliJ IDEA 配置IDEA对JDK的识别通常很智能但手动指定一次可以避免后续项目配置的混乱。打开IntelliJ IDEA如果是新建项目在“Project SDK”选择处点击“Add JDK...”。在弹出的窗口中导航到你的JDK安装根目录例如C:\Program Files\Eclipse Adoptium\jdk-11.0.xx.x-hotspot或/Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home。选中后点击“OK”。IDEA会自动识别出JDK版本和所有类库。之后创建新项目或打开现有项目时都可以在项目设置中指定使用这个SDK。4.2 Eclipse 配置打开Eclipse进入菜单Window-Preferences。在左侧导航树中找到Java-Installed JREs。点击右侧的 “Add...”选择 “Standard VM”点击 “Next”。在 “JRE home” 字段点击 “Directory...” 并选择你的JDK安装根目录注意是包含bin和lib的根目录不是bin目录本身。Eclipse会自动填充其他信息。为其取一个名字如 “Temurin-11”点击 “Finish” 并勾选它作为默认JRE。4.3 Visual Studio Code 配置VS Code通过扩展来支持Java。确保已安装 “Extension Pack for Java”。打开一个Java项目文件夹。按下CtrlShiftP(Windows/Linux) 或CmdShiftP(macOS) 打开命令面板。输入 “Java: Configure Java Runtime”然后选择它。在弹出的界面中你可以看到当前检测到的所有JDK。如果刚安装的JDK 11没有出现可以点击 “Download JDK...” 旁边的齿轮图标然后选择 “Edit ‘java.home’ setting”在用户设置中手动指定java.home的路径。在IDE中成功配置并编译运行一个简单的 “Hello World” 程序是整个安装过程的最终验收标准。5. 进阶配置与常见问题深度排查环境配好了但实际开发中总会遇到一些“坑”。这里我总结几个高频问题及其解决方案。5.1 多版本JDK共存与管理开发中经常需要在不同版本的JDK间切换。粗暴地修改系统环境变量不是好办法。Windows/macOS/Linux通用工具使用SDKMAN!(对于macOS/Linux) 或类似工具。SDKMAN! 是一个用于管理多个SDK版本的工具可以非常方便地安装、切换、列出和卸载JDK版本。安装后一条命令sdk install java 11.0.xx-tem即可安装指定版本sdk use java 11.0.xx-tem可在当前Shell中切换。macOS除了SDKMAN!还可以使用jenv。它可以全局或按目录设置Java版本非常灵活。Windows可以手动设置不同项目使用不同的JDK通过IDE配置或者编写不同的批处理脚本(.bat)来临时设置PATH和JAVA_HOME。5.2 环境变量配置失效的终极检查清单当java或javac命令不生效时按以下顺序排查路径是否正确首先检查JAVA_HOME变量值是否指向了正确的、包含bin文件夹的JDK根目录。一个常见的错误是指向了错误的子目录或JRE目录。Path变量是否包含确认Path变量中是否包含了%JAVA_HOME%\binWindows或$JAVA_HOME/binmacOS/Linux。终端会话是否更新修改环境变量后必须关闭所有旧的命令行窗口或终端标签页重新打开一个新的。环境变量只在进程启动时加载。命令优先级问题在终端输入which javamacOS/Linux或where javaWindows查看系统实际执行的是哪个路径下的java命令。可能有一个旧的、优先级更高的Java路径在Path中排在了前面。用户变量 vs 系统变量Windows如果你在“用户变量”中设置了JAVA_HOME和Path那么只有当前登录用户生效。在“系统变量”中设置则对所有用户生效。确保你没有在冲突的位置设置。5.3 安装后IDE无法识别或编译错误IDE缓存IDE有自身的JDK缓存和索引。尝试以下操作IDEA:File-Invalidate Caches and Restart...Eclipse: 关闭项目再重新打开或者Project-Clean...项目特定配置确保你的项目模块Module或构建路径Build Path中指定的JDK版本与你安装的版本一致。在IDEA中检查File-Project Structure在Eclipse中检查项目属性中的Java Build Path和Java Compiler。构建工具配置如果你使用Maven或Gradle它们有自己指定的JDK版本。检查pom.xml中的maven.compiler.source和maven.compiler.target或Gradle构建文件中的sourceCompatibility和targetCompatibility。同时确保Maven或Gradle本身运行在正确的JDK上可通过mvn -v或gradle --version查看。5.4 关于“JAVA_HOME”的深入理解JAVA_HOME这个变量不仅仅是给命令行用的。许多Java生态工具都重度依赖它Apache Tomcat: 启动脚本通过JAVA_HOME来找到Java执行环境。Apache Maven:mvn脚本会检查JAVA_HOME来决定用哪个JDK来运行Maven本身和编译项目。Gradle: 同样会使用JAVA_HOME或系统路径中的java命令。Jenkins, Elasticsearch, Kafka等众多基于Java的中间件和服务其启动脚本中都会寻找JAVA_HOME。因此正确设置JAVA_HOME是搭建整个Java开发、运维环境的基础中的基础。它应该始终指向一个完整的JDK目录而不是JRE目录因为很多工具需要用到JDK中的工具如javac,jps,jstack等。6. 从配置到实践你的第一个JDK 11程序理论说再多不如动手跑一行代码。让我们用最原始的方式感受一下JDK 11的环境是否真正就绪。编写代码在任何你喜欢的位置例如桌面新建一个文本文件命名为HelloJava11.java。用记事本或任何文本编辑器打开输入以下代码public class HelloJava11 { public static void main(String[] args) { // JDK 10 的局部变量类型推断 var message Hello, JDK 11!; System.out.println(message); } }注意这里我们特意使用了JDK 10引入的var关键字这是JDK 11支持的特性。编译打开命令行终端使用cd命令切换到存放HelloJava11.java文件的目录。然后执行编译命令javac HelloJava11.java如果环境配置正确这个命令会静默执行并在同目录下生成一个HelloJava11.class的字节码文件。运行继续在命令行中执行运行命令java HelloJava11你应该会看到终端输出Hello, JDK 11!。如果以上步骤成功那么恭喜你你的JDK 11开发环境已经100%配置成功并且能够支持新的语言特性。这个过程虽然简单但它完整地验证了javac编译器、java运行时以及核心类库都工作正常。走到这一步你已经成功跨越了Java开发的第一道门槛。一个稳定、可靠的开发环境是后续所有学习、编码和调试的基础。记住遇到问题多检查路径、多验证命令、善用-version这类诊断命令大部分环境问题都能迎刃而解。JDK 11的世界已经为你打开接下来就是去探索更广阔的Java生态了。