在 Ubuntu 上安装和配置 Java 主要有两种方法:
- 使用 APT 包管理器(推荐新手):简单快捷,系统会自动处理依赖关系,但可能不是最新版本,且管理多个版本不如
sdkman方便。 - 使用 SDKMAN!(推荐开发者):是目前最流行、最强大的 Java 环境管理工具,它可以轻松安装、切换和管理多个 Java 版本(JDK, JRE, GraalVM等),是专业开发者的首选。
本指南将详细介绍这两种方法。
使用 APT 包管理器(适用于 Ubuntu 20.04/22.04)
这种方法通过系统的软件源来安装,非常简单。
步骤 1:更新软件包列表
打开终端(快捷键 Ctrl+Alt+T),更新你的本地包索引,以确保你获取的是最新的软件包信息。
sudo apt update
步骤 2:安装 OpenJDK
OpenJDK 是 Java 的开源实现,是绝大多数开发场景的首选,Ubuntu 的软件源中通常包含多个版本的 OpenJDK,OpenJDK 11, 17, 21 等。
推荐安装最新的 LTS (长期支持) 版本,OpenJDK 17 或 21。
安装 OpenJDK 17:
sudo apt install openjdk-17-jdk
安装 OpenJDK 21:
sudo apt install openjdk-21-jdk
如果你需要其他版本,只需将 17 或 21 替换为你想要的版本号即可,openjdk-8-jdk。
安装过程中,系统会自动安装 Java 开发工具包,包括:
javac: Java 编译器java: Java 虚拟机jar: 用于打包 Java 文件的工具- 以及其他相关的库和文档。
步骤 3:验证安装
安装完成后,验证 java 和 javac 命令是否可用。
检查 Java 版本:
java -version
检查编译器版本:
javac -version
如果看到类似以下的输出,说明安装成功:
openjdk version "17.0.10" 2025-01-16
OpenJDK Runtime Environment (build 17.0.10+7-Ubuntu-122.04)
OpenJDK 64-Bit Server VM (build 17.0.10+7-Ubuntu-122.04, mixed mode, sharing)
步骤 4:配置环境变量(可选)
APT 安装的 JDK 会自动配置好环境变量,update-alternatives 机制会处理 java 和 javac 命令的链接,你可以跳过此步骤。
但如果需要手动配置(你安装了多个版本并想指定默认使用哪个),可以这样做:
-
查找 JDK 安装路径:
sudo update-alternatives --config java
这个命令会列出所有已安装的 Java 版本及其路径,记下你想要设置为默认版本的路径。
-
编辑环境变量文件: 打开
/etc/environment文件(需要管理员权限):sudo nano /etc/environment
在文件末尾添加或修改
JAVA_HOME变量:JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"
注意:请将路径替换为你自己系统中 JDK 的实际路径,你可以通过
ls /usr/lib/jvm/来查看所有已安装的 JDK。 -
使配置生效: 保存并关闭文件后,注销并重新登录终端,或者运行以下命令使配置立即生效:
source /etc/environment
-
验证
JAVA_HOME:echo $JAVA_HOME
如果输出为你设置的路径,则配置成功。
使用 SDKMAN!(强烈推荐)
SDKMAN! 是一个命令行工具,用于在类 Unix 系统(如 macOS, Linux, Cygwin, WSL2)上管理多个软件开发工具包,尤其是 Java。
步骤 1:安装 SDKMAN!
打开终端,执行以下命令一键安装:
curl -s "https://get.sdkman.io" | bash
安装过程中会提示你是否配置 SDKMAN! 的环境变量,输入 y 并回车。
步骤 2:重新加载 Shell
为了让 SDKMAN! 命令在当前终端会话中生效,需要重新加载配置文件。
source "$HOME/.sdkman/bin/sdkman-init.sh"
为了方便,你可以将上述命令添加到你的 Shell 配置文件(如 ~/.bashrc, ~/.zshrc)的末尾,这样每次打开新终端都会自动加载。
步骤 3:使用 SDKMAN! 安装 Java
现在你可以用 sdk 命令来管理 Java 了。
查看所有可用的 Java 版本
sdk list java
你会看到一个长长的列表,包括:
dist-*: 官方发布的版本(如dist-zulu,dist-temurin)libs-*: 供应商特定的版本(如libs-openjdk)
安装一个 Java 版本
推荐安装 Temurin (Adoptium) 或 Zulu,它们是稳定且广泛使用的 OpenJDK 发行版。
安装最新的 LTS 版本(Java 21):
sdk install java 21.0.2-tem
注意:0.2-tem 是一个简写,sdk list java 会告诉你完整的可用版本标识符。
安装 Java 17:
sdk install java 17.0.10-tem
步骤 4:切换 Java 版本
这是 SDKMAN! 最强大的功能,如果你安装了多个 Java 版本,可以轻松切换。
查看当前已安装的版本
sdk current java
切换默认使用的 Java 版本
sdk default java 21.0.2-tem
临时在当前终端会话中切换版本
sdk use java 17.0.10-tem
步骤 5:验证安装
和之前一样,使用 java -version 和 javac -version 来验证。
更重要的是,SDKMAN! 会自动为你设置好 JAVA_HOME。
echo $JAVA_HOME
输出会是类似 /home/your_user/.sdkman/candidates/java/current 的路径,它会自动指向你当前激活的 Java 版本。
总结与对比
| 特性 | APT 包管理器 | SDKMAN! |
|---|---|---|
| 安装难度 | 非常简单 | 简单,只需一次安装 |
| 版本管理 | 困难,依赖 update-alternatives |
非常容易,一键安装、切换、删除 |
| 获取版本 | 依赖 Ubuntu 官方软件源,可能不是最新 | 可以获取几乎所有官方和供应商的最新版本 |
JAVA_HOME |
需手动配置 | 自动配置,非常智能 |
| 适用人群 | 新手,只需要一个稳定版本的 Java | 所有开发者,特别是需要频繁切换 Java 版本的人 |
| 推荐度 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
最终建议
- 如果你是 Ubuntu 新手,或者只需要一个稳定的 Java 环境来完成特定任务:使用 方法一 (APT) 就完全足够了。
- 如果你是 Java 开发者,或者你未来可能会接触需要不同 Java 版本的项目:强烈建议你花几分钟时间学习并使用 方法二 (SDKMAN!),它会为你未来的开发工作节省大量时间和精力,是现代 Java 开发者的标准配置之一。
