Ubuntu Linux 安装 Oracle JDK 完整指南:卸载 OpenJDK、配置环境变量、Alternatives 切换
前言
Ubuntu 默认预装 OpenJDK,但部分企业应用、商业中间件、旧版构建脚本强制要求 Oracle JDK (含商业特性、字体渲染、加密策略差异)。本指南演示在 Ubuntu 20.04/22.04/24.04 LTS 上彻底卸载 OpenJDK、下载安装 Oracle JDK (tar.gz)、配置系统级环境变量、注册 Alternatives 优先级、验证生效全流程。
步骤 1:彻底清理预装 OpenJDK
# 查看已安装 OpenJDK 包
dpkg -l | grep -i openjdk
# 完全卸载 (含配置文件)
sudo apt-get purge openjdk-*
sudo apt-get autoremove --purge
sudo apt-get autoclean
验证清理:java -version 应提示「command not found」。
步骤 2:确认系统架构
file /sbin/init
# 输出含 "x86_64" → 64 位 (下载 x64)
# 输出含 "i386"/"i686" → 32 位 (下载 x86)
现代服务器/桌面均为 64 位,下载 Linux x64 tar.gz 包。
步骤 3:下载 Oracle JDK
- 访问 Oracle Java SE Downloads
- 接受许可协议 (Oracle OTN License)
- 选择 Linux x64 → tar.gz (如
jdk-21_linux-x64_bin.tar.gz或 JDK 8/11/17 对应版本) - 登录 Oracle Account 下载 (或使用
wget --header "Cookie: oraclelicense=accept-securebackup-cookie" URL直接下载)
下载文件默认位于 ~/Downloads/。
步骤 4:解压安装到标准目录
cd ~/Downloads
sudo mkdir -p /usr/lib/jvm
sudo tar -xvf jdk-21_linux-x64_bin.tar.gz -C /usr/lib/jvm
# 解压后目录名如 jdk-21.0.2,建议重命名便于管理
sudo mv /usr/lib/jvm/jdk-21.0.2 /usr/lib/jvm/java-21-oracle
步骤 5:配置系统级环境变量 (/etc/profile)
sudo nano /etc/profile
在文件末尾追加 (根据实际版本调整路径):
# Oracle JDK 环境变量
export JAVA_HOME=/usr/lib/jvm/java-21-oracle
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
保存退出 (Ctrl+O, Enter, Ctrl+X),然后立即生效:
source /etc/profile
步骤 6:注册 Alternatives 系统 (多版本切换核心)
Ubuntu/Debian 使用 update-alternatives 管理命令链接,实现多 JDK 无缝切换。
# 注册 java、javac、javaws、jar、javadoc 等核心命令
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/java-21-oracle/bin/java" 2000
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-21-oracle/bin/javac" 2000
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/java-21-oracle/bin/javaws" 2000
sudo update-alternatives --install "/usr/bin/jar" "jar" "/usr/lib/jvm/java-21-oracle/bin/jar" 2000
sudo update-alternatives --install "/usr/bin/javadoc" "javadoc" "/usr/lib/jvm/java-21-oracle/bin/javadoc" 2000
# 设为默认 (优先级 2000 通常最高)
sudo update-alternatives --set java "/usr/lib/jvm/java-21-oracle/bin/java"
sudo update-alternatives --set javac "/usr/lib/jvm/java-21-oracle/bin/javac"
sudo update-alternatives --set javaws "/usr/lib/jvm/java-21-oracle/bin/javaws"
sudo update-alternatives --set jar "/usr/lib/jvm/java-21-oracle/bin/jar"
sudo update-alternatives --set javadoc "/usr/lib/jvm/java-21-oracle/bin/javadoc"
优先级说明:数字越大优先级越高。若已有 OpenJDK (优先级 1111),设 2000 即可自动成为默认。
步骤 7:验证安装与切换测试
# 验证版本
java -version
javac -version
# 查看 alternatives 状态
update-alternatives --display java
update-alternatives --display javac
# 交互式切换 (如需回退 OpenJDK)
sudo update-alternatives --config java
# 输入编号选择版本
预期输出 (JDK 21 示例):
java version "21.0.2" 2024-01-16 LTS Java(TM) SE Runtime Environment (build 21.0.2+13-LTS-58) Java HotSpot(TM) 64-Bit Server VM (build 21.0.2+13-LTS-58, mixed mode, sharing)
步骤 8:配置桌面/IDE 集成 (可选)
- IntelliJ IDEA:
File → Project Structure → SDK → + → Add JDK指向/usr/lib/jvm/java-21-oracle - Eclipse:
Window → Preferences → Java → Installed JREs → Add → Standard VM目录同前 - VS Code:安装 Extension Pack for Java,自动检测
JAVA_HOME或java.home设置 - 桌面快捷方式:创建
.desktop文件指向$JAVA_HOME/bin/java(较少用)
进阶:安装多版本 Oracle JDK 并自由切换
# 追加安装 JDK 17
sudo tar -xvf jdk-17_linux-x64_bin.tar.gz -C /usr/lib/jvm
sudo mv /usr/lib/jvm/jdk-17.0.10 /usr/lib/jvm/java-17-oracle
# 注册 alternatives (优先级 1700 低于 21 的 2000)
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/java-17-oracle/bin/java" 1700
# ... 同理注册 javac/jar 等
# 切换至 JDK 17
sudo update-alternatives --set java "/usr/lib/jvm/java-17-oracle/bin/java"
# 或交互式选择
sudo update-alternatives --config java
卸载 Oracle JDK
# 移除 alternatives 注册
sudo update-alternatives --remove java "/usr/lib/jvm/java-21-oracle/bin/java"
sudo update-alternatives --remove javac "/usr/lib/jvm/java-21-oracle/bin/javac"
# ... 移除所有已注册命令
# 删除安装目录
sudo rm -rf /usr/lib/jvm/java-21-oracle
# 清理 /etc/profile 中的环境变量行
sudo nano /etc/profile # 删除 JAVA_HOME/PATH/CLASSPATH 相关行
source /etc/profile
替代方案:OpenJDK 维护版本 (推荐生产环境)
Oracle JDK 需商业授权 (Java SE Subscription) 才能获得长期安全更新。生产环境强烈建议使用免费长期维护的 OpenJDK 发行版:
| 发行版 | 维护周期 | 安装命令 (Ubuntu) | 特色 |
|---|---|---|---|
| Eclipse Temurin (Adoptium) | 8/11/17/21 LTS 至 2026/2029/2031+ | sudo apt install -y temurin-21-jdk (需添加 Adoptium 源) | 社区中立、TCK 认证、无商业绑定 |
| Azul Zulu | 8/11/17/21 LTS 长期 | sudo apt install -y zulu21-jdk (需添加 Azul 源) | 商业支持可选、ARM/x86 全架构 |
| Amazon Corretto | 8/11/17/21 LTS 免费长期 | sudo apt install -y java-21-amazon-corretto-jdk (需添加 Corretto 源) | AWS 生产验证、性能调优补丁 |
| Microsoft Build of OpenJDK | 11/17/21 LTS | sudo apt install -y microsoft-jdk-21 (需添加 Microsoft 源) | Azure 优化、ARM64 原生 |
添加第三方源通用步骤:
# 以 Temurin 为例
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo gpg --dearmor -o /usr/share/keyrings/adoptium.gpg
echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb jammy main" | sudo tee /etc/apt/sources.list.d/adoptium.list
sudo apt update && sudo apt install temurin-21-jdk
总结
在 Ubuntu 上安装 Oracle JDK 核心步骤:清理 OpenJDK → 下载 tar.gz → 解压至 /usr/lib/jvm → 配置 /etc/profile → 注册 Alternatives 高优先级 → 验证版本。掌握 update-alternatives 可实现多 JDK 秒级切换。生产环务必评估 Oracle JDK 授权成本,优先考虑 Temurin/Zulu/Corretto 等免费 LTS 发行版。
java
- 装卸平台安装实战指南:Koke专业团队的标准化交付流程
- Java EE应用部署Microsoft Azure全流程实战指南
- Google Cloud部署WordPress全流程实战:从实例创建到域名SSL配置
- Windows 上安装 Dev-C++:分步指南
- 在 Windows 上安装 Visual Studio 2019 Community 版进行 C# 开发
- 精通 Java 输入输出:打印、读取与格式化数据
- Java 对象数组创建:分步指南
- Java 生成随机数实战:Random 与 Math.random 详解
- Java BufferedReader 读取文件:实战指南与示例
- Java 中 char 与 String 相互转换:实用示例与最佳实践
- Java 递归反转字符串:原理、代码实现与性能分析
- Java 9 模块系统:链接时、自定义运行时镜像与实战