三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

JDK 11安装与环境配置全攻略:从OpenJDK选择到IDE集成

JDK 11安装与环境配置全攻略:从OpenJDK选择到IDE集成

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发行版,该如何选择?这里我基于稳定性和社区活跃度给出建议:

  1. Eclipse Temurin(原AdoptOpenJDK/Adoptium):这是目前最受社区欢迎的选择之一。由Eclipse基金会管理,完全开源,提供高质量的、经过TCK(技术兼容性工具包)认证的构建,对各个LTS版本的支持周期非常明确。对于新手和绝大多数场景,我首推这个版本。
  2. Amazon Corretto:亚马逊提供的免费、多平台的OpenJDK发行版。亚马逊承诺为其提供长期支持,并保证与Java SE标准的兼容性。如果你在AWS环境部署,Corretto是个无缝衔接的好选择。
  3. Azul Zulu:Azul Systems提供的构建版,同样免费,支持平台非常广泛(包括ARM架构)。Azul在JVM领域有深厚的技术积累,其构建版本也值得信赖。
  4. Microsoft Build of OpenJDK:微软维护的发行版,在Windows上集成体验可能更好。

对于本次安装,我们将以Eclipse Temurin JDK 11为例进行演示。它的下载页面清晰,版本齐全,且没有复杂的商业条款困扰。

注意:请务必从上述官方或可信的镜像站点下载JDK。切勿从不明来源的小网站下载,以免安装包被篡改,植入恶意软件。

3. 详细实操步骤:从下载到安装验证

接下来,我们进入实战环节。我会分Windows、macOS和Linux三个主流操作系统来讲解,请根据你的电脑系统选择对应的部分阅读。

3.1 Windows系统安装指南

Windows用户数量最多,图形化安装也相对直观,但环境变量配置是关键。

3.1.1 下载安装包
  1. 打开浏览器,访问 Eclipse Adoptium 的官网。找到 JDK 11 的下载页面。
  2. 在版本选择中,找到 “Temurin 11 (LTS)”。在右侧选择你的操作系统(Windows)和架构(通常是 x64,除非你用的是非常老的32位电脑或新的ARM电脑)。包类型选择 “MSI Installer”。MSI安装包的好处是它能自动为你配置系统环境变量,比ZIP压缩包方式更省心。
  3. 点击下载,你会得到一个类似OpenJDK11U-jdk_x64_windows_hotspot_11.0.xx_x.msi的文件。
3.1.2 运行安装程序
  1. 双击下载的.msi文件运行。如果系统弹出用户账户控制(UAC)提示,点击“是”。
  2. 安装向导启动后,点击“Next”。在下一个界面,你可以选择安装路径。强烈建议使用默认路径(通常是C:\Program Files\Eclipse Adoptium\jdk-11.0.xx.x-hotspot)。这样便于统一管理,也避免后续配置环境变量时找不到目录。记住这个路径,稍后可能会用到。
  3. 继续点击“Next”,安装程序会开始复制文件。安装过程很快,通常一分钟内即可完成。
  4. 安装完成后,建议不要立即重启(通常也不需要)。点击“Finish”关闭向导。
3.1.3 配置环境变量(关键步骤)

这是Windows下最重要的一步,目的是让系统在任何目录下都能识别javajavac命令。

  1. 验证安装:首先,按Win + R键,输入cmd打开命令提示符。输入java -version并回车。如果你看到类似下面的输出,恭喜你,安装程序可能已经帮你配好了部分环境变量。

    openjdk version "11.0.xx" 2024-xx-xx OpenJDK Runtime Environment Temurin-11.0.xx+xx (build 11.0.xx+xx) OpenJDK 64-Bit Server VM Temurin-11.0.xx+xx (build 11.0.xx+xx, mixed mode)

    再输入javac -version。如果也能正确显示版本号(如javac 11.0.xx),那么环境变量已完全配置成功,你可以跳过后续配置步骤。

  2. 手动配置(如果需要):如果javac命令提示“不是内部或外部命令”,则需要手动配置JAVA_HOMEPath

    • 设置JAVA_HOME
      • 在桌面或文件资源管理器右键点击“此电脑”,选择“属性”。
      • 点击“高级系统设置” -> “环境变量”。
      • 在“系统变量”区域,点击“新建”。
      • 变量名输入JAVA_HOME
      • 变量值输入你的JDK安装路径,例如C:\Program Files\Eclipse Adoptium\jdk-11.0.xx.x-hotspot务必确保这个路径指向的是JDK的根目录,里面有binlib等文件夹,而不是更深的子目录。
    • 更新Path变量
      • 在“系统变量”列表中找到Path变量,选中并点击“编辑”。
      • 点击“新建”,然后添加一条新记录:%JAVA_HOME%\bin
      • 为了确保优先级,你可以使用“上移”按钮,将%JAVA_HOME%\bin移动到列表顶部附近。
      • 逐一点击“确定”关闭所有窗口。
  3. 验证配置

    • 非常重要:关闭之前打开的所有命令提示符窗口。因为环境变量只在新的终端会话中生效。
    • 重新打开一个新的命令提示符(cmd)。
    • 依次输入java -versionjavac -version。两者都应正确显示JDK 11的版本信息。

实操心得:在Windows上,使用MSI安装器通常能自动配置好java命令的路径(即JRE部分),但javac编译器(JDK部分)的路径有时仍需手动通过JAVA_HOME来添加。这就是为什么我们强调要同时检查javajavac两个命令。JAVA_HOME这个变量本身也被很多Java应用(如Maven、Gradle、Tomcat、IDE)所依赖,单独设置它是一举多得的好习惯。

3.2 macOS系统安装指南

macOS用户可以通过多种方式安装,这里介绍最通用的两种:手动下载安装包和使用包管理器Homebrew。

3.2.1 方式一:下载PKG安装包(推荐给新手)
  1. 下载:同样访问 Eclipse Adoptium 网站,选择 macOS 和合适的架构(Apple Silicon芯片选aarch64,Intel芯片选x64)。下载.pkg格式的安装包。
  2. 安装:双击下载的.pkg文件,按照图形化向导一步步操作即可,安装过程会像安装普通Mac软件一样简单。安装程序会自动将JDK部署到/Library/Java/JavaVirtualMachines/temurin-11.jdk目录下。
  3. 验证:打开“终端”(Terminal)应用,输入java -versionjavac -version。如果正确显示Temurin 11的信息,则安装成功。macOS的安装包通常会自动处理好路径,无需手动配置环境变量。
3.2.2 方式二:使用Homebrew安装(推荐给开发者)

如果你已经安装了Homebrew(macOS上强大的包管理器),那么安装JDK将变得异常简单和统一。

  1. 查找可用版本:在终端中执行brew search openjdk,你可以看到所有可用的OpenJDK版本。
  2. 安装Temurin 11:执行以下命令:
    brew install --cask temurin11
    命令中的--cask表示这是一个需要图形化安装的软件包(如浏览器、编辑器),对于JDK,Homebrew会下载pkg并自动安装。
  3. 验证:安装完成后,重启终端或打开一个新的终端标签页,输入java -version验证。

注意事项:在macOS上,可能会预装旧版本的Java。通过上述方式安装后,新JDK的路径会自动加入系统环境。如果遇到命令冲突,可以通过export PATH命令临时调整路径,或使用jenv这类工具来管理多个JDK版本。

3.3 Linux系统安装指南

Linux发行版众多,安装方式也多样。这里以最常见的基于Debian/Ubuntu和基于RHEL/CentOS/Fedora的发行版为例。

3.3.1 通用方法:下载压缩包配置(适用于所有发行版)

这种方法最直接,不依赖特定的包管理器。

  1. 下载:从Eclipse Adoptium网站下载对应Linux架构的.tar.gz压缩包(例如x64 Linux)。
  2. 解压:打开终端,切换到下载目录,使用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.xx+xx的文件夹。
  3. 配置环境变量:编辑当前用户的~/.bashrc文件(如果你使用Bash)或~/.zshrc(如果你使用Zsh)。
    nano ~/.bashrc
    在文件末尾添加以下内容(请根据实际路径修改):
    export JAVA_HOME=/usr/lib/jvm/jdk-11.0.xx+xx export PATH=$JAVA_HOME/bin:$PATH
    保存并退出编辑器。
  4. 使配置生效:执行source ~/.bashrc让配置立即在当前终端生效,或直接关闭终端重新打开。
  5. 验证:执行java -versionjavac -version
3.3.2 使用包管理器安装(以Ubuntu为例)

对于Ubuntu及其衍生版,可以使用apt安装OpenJDK。

  1. 更新包索引sudo apt update
  2. 安装JDK 11sudo apt install openjdk-11-jdk
  3. 验证:安装完成后,系统已自动配置好。直接运行java -version检查。

对于RHEL/CentOS/Fedora,可以使用yumdnfsudo 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的识别通常很智能,但手动指定一次可以避免后续项目配置的混乱。

  1. 打开IntelliJ IDEA,如果是新建项目,在“Project SDK”选择处,点击“Add JDK...”。
  2. 在弹出的窗口中,导航到你的JDK安装根目录(例如C:\Program Files\Eclipse Adoptium\jdk-11.0.xx.x-hotspot/Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home)。选中后点击“OK”。
  3. IDEA会自动识别出JDK版本和所有类库。之后创建新项目或打开现有项目时,都可以在项目设置中指定使用这个SDK。

4.2 Eclipse 配置

  1. 打开Eclipse,进入菜单Window->Preferences
  2. 在左侧导航树中,找到Java->Installed JREs
  3. 点击右侧的 “Add...”,选择 “Standard VM”,点击 “Next”。
  4. 在 “JRE home” 字段,点击 “Directory...” 并选择你的JDK安装根目录(注意:是包含binlib的根目录,不是bin目录本身)。Eclipse会自动填充其他信息。
  5. 为其取一个名字,如 “Temurin-11”,点击 “Finish” 并勾选它作为默认JRE。

4.3 Visual Studio Code 配置

VS Code通过扩展来支持Java。确保已安装 “Extension Pack for Java”。

  1. 打开一个Java项目文件夹。
  2. 按下Ctrl+Shift+P(Windows/Linux) 或Cmd+Shift+P(macOS) 打开命令面板。
  3. 输入 “Java: Configure Java Runtime”,然后选择它。
  4. 在弹出的界面中,你可以看到当前检测到的所有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)来临时设置PATHJAVA_HOME

5.2 环境变量配置失效的终极检查清单

javajavac命令不生效时,按以下顺序排查:

  1. 路径是否正确:首先,检查JAVA_HOME变量值是否指向了正确的、包含bin文件夹的JDK根目录。一个常见的错误是指向了错误的子目录或JRE目录。
  2. Path变量是否包含:确认Path变量中是否包含了%JAVA_HOME%\bin(Windows)或$JAVA_HOME/bin(macOS/Linux)。
  3. 终端会话是否更新:修改环境变量后,必须关闭所有旧的命令行窗口或终端标签页,重新打开一个新的。环境变量只在进程启动时加载。
  4. 命令优先级问题:在终端输入which java(macOS/Linux)或where java(Windows),查看系统实际执行的是哪个路径下的java命令。可能有一个旧的、优先级更高的Java路径在Path中排在了前面。
  5. 用户变量 vs 系统变量(Windows):如果你在“用户变量”中设置了JAVA_HOMEPath,那么只有当前登录用户生效。在“系统变量”中设置则对所有用户生效。确保你没有在冲突的位置设置。

5.3 安装后IDE无法识别或编译错误

  1. IDE缓存:IDE有自身的JDK缓存和索引。尝试以下操作:
    • IDEA:File->Invalidate Caches and Restart...
    • Eclipse: 关闭项目再重新打开,或者Project->Clean...
  2. 项目特定配置:确保你的项目模块(Module)或构建路径(Build Path)中指定的JDK版本与你安装的版本一致。在IDEA中检查File->Project Structure;在Eclipse中检查项目属性中的Java Build PathJava Compiler
  3. 构建工具配置:如果你使用Maven或Gradle,它们有自己指定的JDK版本。检查pom.xml中的<maven.compiler.source><maven.compiler.target>,或Gradle构建文件中的sourceCompatibilitytargetCompatibility。同时,确保Maven或Gradle本身运行在正确的JDK上(可通过mvn -vgradle --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的环境是否真正就绪。

  1. 编写代码:在任何你喜欢的位置(例如桌面),新建一个文本文件,命名为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支持的特性。

  2. 编译:打开命令行(终端),使用cd命令切换到存放HelloJava11.java文件的目录。然后执行编译命令:

    javac HelloJava11.java

    如果环境配置正确,这个命令会静默执行,并在同目录下生成一个HelloJava11.class的字节码文件。

  3. 运行:继续在命令行中,执行运行命令:

    java HelloJava11

    你应该会看到终端输出:Hello, JDK 11!

如果以上步骤成功,那么恭喜你,你的JDK 11开发环境已经100%配置成功,并且能够支持新的语言特性。这个过程虽然简单,但它完整地验证了javac编译器、java运行时以及核心类库都工作正常。

走到这一步,你已经成功跨越了Java开发的第一道门槛。一个稳定、可靠的开发环境是后续所有学习、编码和调试的基础。记住,遇到问题多检查路径、多验证命令、善用-version这类诊断命令,大部分环境问题都能迎刃而解。JDK 11的世界已经为你打开,接下来,就是去探索更广阔的Java生态了。

← 返回列表