- 安装 OpenJDK (推荐):适用于大多数开发者和企业应用,免费开源。
- 安装 Oracle JDK:适用于需要商业支持或特定 Oracle 许可证的场景。
- 使用 SDKMAN! (强烈推荐):一个命令行工具,可以轻松管理多个 Java 版本。
- 配置环境变量详解:深入理解
JAVA_HOME和PATH的作用。 - 验证安装和常见问题:确保配置正确并解决可能遇到的问题。
安装 OpenJDK (最常用、最推荐)
OpenJDK 是 Java 的开源实现,与 Oracle JDK 功能上几乎完全一致,是绝大多数开发环境的首选。

步骤 1:更新软件包列表
在安装任何新软件之前,最好先更新系统的软件包索引。
sudo apt update
步骤 2:安装 OpenJDK
你可以安装多个版本的 Java,OpenJDK 11 和 OpenJDK 17,它们可以并存。
安装 OpenJDK 17 (LTS 版本,推荐)
sudo apt install openjdk-17-jdk
openjdk-17-jdk:包含 JRE (Java Runtime Environment) 和 JDK (Java Development Kit),也就是开发所需的编译器 (javac) 和工具。- 如果你只需要运行 Java 程序,可以安装
openjdk-17-jre。
安装 OpenJDK 11 (另一个 LTS 版本)
sudo apt install openjdk-11-jdk
步骤 3:验证安装
安装完成后,使用以下命令验证 Java 是否安装成功。
java -version javac -version
如果成功,你会看到类似以下的输出(版本号可能不同):

# java -version 的输出 openjdk version "17.0.2" 2025-01-18 OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-0ubuntu122.04) OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-0ubuntu122.04, mixed mode, sharing) # javac -version 的输出 javac 17.0.2
安装 Oracle JDK
如果你需要 Oracle 的商业支持或使用某些仅对 Oracle JDK 免费的功能,可以选择安装 Oracle JDK。
步骤 1:下载 Oracle JDK
- 访问 Oracle 官网下载页面:Oracle Java Development Kit Downloads
- 选择你需要的版本(JDK 17)和操作系统(Linux x64)。
- 接受许可协议,然后下载
.tar.gz文件。
步骤 2:创建安装目录
我们将 JDK 安装在 /usr/lib/jvm/ 目录下。
sudo mkdir -p /usr/lib/jvm
步骤 3:解压并移动 JDK
假设你下载的文件是 jdk-17.0.2_linux-x64_bin.tar.gz,并且它位于你的 Downloads 文件夹中。
# 进入下载目录 cd ~/Downloads # 解压文件 tar -xvf jdk-17.0.2_linux-x64_bin.tar.gz # 将解压后的文件夹移动到 /usr/lib/jvm/ sudo mv jdk-17.0.2 /usr/lib/jvm/
步骤 4:配置环境变量
这是最关键的一步,我们需要设置 JAVA_HOME 和将 Java 相关命令添加到 PATH。

-
查找 JDK 路径 你的 JDK 现在位于
/usr/lib/jvm/jdk-17.0.2,确认一下里面的bin目录是否存在。 -
编辑
~/.bashrc文件 这是一个针对当前用户的配置文件,推荐使用。nano ~/.bashrc
-
在文件末尾添加以下内容
# 设置 JAVA_HOME export JAVA_HOME=/usr/lib/jvm/jdk-17.0.2 # 将 $JAVA_HOME/bin 添加到 PATH export PATH=$JAVA_HOME/bin:$PATH
注意:请将
/usr/lib/jvm/jdk-17.0.2替换为你实际的 JDK 路径。 -
使配置生效 保存并关闭文件后,运行以下命令让配置立即生效。
source ~/.bashrc
歺骤 5:验证安装
echo $JAVA_HOME java -version javac -version
JAVA_HOME 输出正确的路径,java 和 javac 命令能正常工作,则说明安装成功。
使用 SDKMAN! (强烈推荐给开发者)
SDKMAN! 是一个用于在类 Unix 系统上管理多个软件开发套件(如 Java, Groovy, Gradle, Maven 等)的命令行工具,它可以让你轻松地在 Java 8, 11, 17 等版本之间切换。
步骤 1:安装 SDKMAN!
打开终端,执行以下命令:
curl -s "https://get.sdkman.io" | bash
安装完成后,根据提示执行:
source "$HOME/.sdkman/bin/sdkman-init.sh"
步骤 2:使用 SDKMAN! 安装 Java
安装 Java 变得异常简单。
-
列出所有可用的 Java 版本
sdk list java
你会看到一个长长的列表,包括各种 Oracle OpenJDK, Amazon Corretto, Microsoft 等版本。
-
安装一个 Java 版本 (Java 17)
# 安装 OpenJDK 17 (LTS) sdk install java 17.0.2-tem # 安装 Amazon Corretto 17 (另一个优秀的 LTS 发行版) # sdk install java 17.0.2-amzn
tem代表 Temurin,是 Eclipse 基金会的 OpenJDK 发行版,质量很高。 -
切换 Java 版本 SDKMAN! 的最大优势之一就是版本切换。
# 查看当前使用的 Java java -version # 切换到 Java 11 sdk use java 11.0.15-tem # 再次查看版本,已经切换 java -version
-
设置默认 Java 版本 如果你希望某个版本成为默认版本,可以设置为默认。
sdk default java 17.0.2-tem
之后打开新的终端,默认就会使用 Java 17。
环境变量详解 (JAVA_HOME 和 PATH)
理解这两个变量对于排查问题和手动配置至关重要。
PATH 环境变量
- 作用:操作系统用来查找可执行文件的路径列表,当你输入一个命令(如
java)时,系统会在PATH中列出的所有目录里依次寻找这个命令。 - 配置:我们将 Java 的
bin目录($JAVA_HOME/bin)添加到PATH的最前面,这样,当你输入java时,系统会优先找到你配置的 Java,而不是系统可能自带的旧版本 Java。 - 查看:
echo $PATH
JAVA_HOME 环境变量
- 作用:这是一个约定,许多 Java 相关的工具(如 Tomcat, Jetty, Maven, Gradle)和应用程序服务器都需要通过这个变量来找到 JDK 的安装位置,它是一个指向 JDK 根目录的指针。
- 配置:
export JAVA_HOME=/path/to/your/jdk - 为什么需要它?:假设你没有设置
JAVA_HOME,而是直接把java和javac命令放到了PATH里,如果某个应用需要调用JAVA_HOME来启动,它就找不到 JDK 的根目录,从而无法运行,设置JAVA_HOME让配置更加清晰和可移植。
最佳实践:将 JAVA_HOME 和 PATH 的配置都写入 ~/.bashrc 或 /etc/environment(系统全局)中,这样每次登录都会自动加载。
常见问题与解决 (FAQ)
Q1: java -version 显示的不是我安装的版本,而是系统自带的旧版本。
原因:PATH 中存在一个旧版本的 Java 路径,并且在你配置的 Java 路径之前。
解决:
- 检查
PATH变量:echo $PATH - 查看你配置的 Java 路径是否在
PATH的最前面,如果不是,编辑~/.bashrc文件,将export PATH=$JAVA_HOME/bin:$PATH这一行调整到文件中其他PATH相关配置的上方。 - 确保
source ~/.bashrc已经执行,或者打开一个新的终端窗口。
Q2: 我安装了多个 Java 版本,如何快速切换?
解决:
- 如果使用 SDKMAN!:直接使用
sdk use java <version>。 - 如果手动安装:你需要修改
~/.bashrc文件,改变JAVA_HOME的值,source ~/.bashrc,这个过程比较繁琐,这也是为什么推荐使用 SDKMAN! 的原因。
Q3: 如何卸载 Java?
-
对于
apt安装的 OpenJDK:sudo apt purge openjdk-17-jdk # --purge 会删除配置文件 sudo autoremove # 清理不再需要的依赖包
-
对于手动安装的 Oracle JDK:
# 删除 JDK 目录 sudo rm -rf /usr/lib/jvm/jdk-17.0.2 # 编辑 ~/.bashrc,删除之前添加的 JAVA_HOME 和 PATH 行 nano ~/.bashrc # 保存后 source ~/.bashrc
-
对于 SDKMAN! 安装的 Java:
# 卸载特定版本 sdk uninstall java 17.0.2-tem # 卸载 SDKMAN! 本身 (可选) sdk self uninstall
| 方法 | 优点 | 缺点 | 适用人群 |
|---|---|---|---|
apt 安装 OpenJDK |
简单、快速、由系统包管理器管理,易于卸载和更新。 | 版本可能不是最新的,且难以在同一系统上管理多个版本。 | 初学者、只需要一个稳定 Java 版本的用户、系统管理员。 |
| 手动安装 Oracle JDK | 可获得最新版本、特定厂商的 JDK。 | 配置繁琐(需手动设置环境变量),升级和卸载麻烦。 | 需要 Oracle JDK 特定功能或商业支持的用户。 |
| 使用 SDKMAN! | 强烈推荐,轻松安装、切换和管理多个 Java 版本,支持多种发行版。 | 需要先安装 SDKMAN! 本身。 | 所有开发者,尤其是需要在不同 Java 项目间频繁切换的开发者。 |
对于大多数用户,从 apt 安装 OpenJDK 17 开始是最好的选择,如果你发现自己需要频繁切换 Java 版本,那么学习并使用 SDKMAN! 将会极大地提升你的工作效率。
