目录
- 前提条件:检查系统架构
- 使用 APT 包管理器(推荐)
- 安装 OpenJDK (最简单)
- 安装 Oracle JDK (可选)
- 管理多个 Java 版本 (关键步骤)
- 手动下载安装包(高级)
- 下载 JDK
- 配置环境变量
- 验证 Java 安装
- 常见问题与解决方案
- 总结与建议
前提条件:检查系统架构
在安装任何软件之前,最好先确认你的系统是 64 位还是 32 位的,现代 Ubuntu 系统几乎都是 64 位的。
打开终端,运行以下命令:
uname -m
如果输出是 x86_64,那么你的系统是 64 位的,如果是 i686 或 i386,则是 32 位的,所有现代的 JDK 都是为 64 位系统设计的。
使用 APT 包管理器(推荐新手)
这是最简单、最快捷的方式,并且包管理器会自动处理依赖关系,我们主要推荐安装 OpenJDK,它是 Java 的开源实现,完全免费,并且被广泛使用。
A. 安装 OpenJDK
OpenJDK 有多个版本,如 JDK 8, 11, 17, 21 等。建议安装最新的 LTS(长期支持)版本,JDK 17 或 JDK 21。
更新软件包列表
sudo apt update
安装 JDK 17 (推荐)
sudo apt install openjdk-17-jdk
这个命令会安装 JDK 17 的开发工具包,包括 javac (编译器)、jar (打包工具) 和 javadoc (文档生成器) 等。
(可选) 安装其他版本 如果你需要其他版本,JDK 11,可以运行:
sudo apt install openjdk-11-jdk
或者 JDK 8:
sudo apt install openjdk-8-jdk
B. 安装 Oracle JDK (可选)
Oracle JDK 是官方提供的 JDK,需要接受许可协议,虽然功能上与 OpenJDK 基本一致,但有些商业项目或特定工具可能要求使用它。
添加 Oracle APT 仓库
sudo apt install -y wget apt-transport-https ca-certificates wget -qO - https://packages.oracle.com/keys/oracle.asc | sudo gpg --dearmor -o /usr/share/keyrings/oracle.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle.gpg] https://packages.oracle.com/debian/ $(lsb_release -cs) non-free" | sudo tee /etc/apt/sources.list.d/oracle.list
更新并安装
sudo apt update sudo apt install -y oracle-java17-installer
C. 管理多个 Java 版本 (关键步骤)
当你安装了多个版本的 Java (如 JDK 8 和 JDK 17) 后,系统默认使用的版本可能不是你想要的。update-alternatives 工具可以帮助你轻松切换。
查看已安装的 Java 版本
update-alternatives --config java
如果之前没有通过 update-alternatives 注册,你可能需要先手动注册它们。
手动注册 Java 版本 (如果需要)
假设你的 JDK 8 和 JDK 17 分别安装在以下路径(可以通过 which java 和 ls -l $(which java) 查看,或者直接去 /usr/lib/jvm/ 目录下找):
- JDK 8 路径:
/usr/lib/jvm/java-8-openjdk-amd64/bin/java - JDK 17 路径:
/usr/lib/jvm/java-17-openjdk-amd64/bin/java
运行以下命令进行注册:
# 注册 JDK 8 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/bin/java 1 # 注册 JDK 17 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 2
数字 1 和 2 是优先级,数字越大,优先级越高。
切换 Java 版本 再次运行切换命令:
sudo update-alternatives --config java
你会看到类似下面的输出:
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 2 auto mode
1 /usr/lib/jvm/java-8-openjdk-amd64/bin/java 1 manual mode
2 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 2 manual mode
Press <enter> to keep the current choice[*], or type selection number:
输入你想要的编号(1),然后按回车,默认的 Java 版本就会切换。
手动下载安装包(高级)
当你需要使用官方的 Oracle JDK、或者 APT 仓库中没有的特定版本时,可以使用此方法。
A. 下载 JDK
- 访问 Oracle JDK 下载页面 或 Adoptium (Eclipse Temurin) 下载页面。
- 选择你需要的 JDK 版本(JDK 17)和操作系统(Linux x64)。
- 下载
.tar.gz压缩包,下载到~/Downloads目录。
B. 配置环境变量
创建安装目录
我们会将 JDK 安装在 /usr/local/ 目录下。
sudo mkdir -p /usr/local/java
解压 JDK
假设你下载的文件是 jdk-17.0.8_linux-x64_bin.tar.gz,并且它在 ~/Downloads 目录下。
# 将文件移动到创建的目录 sudo mv ~/Downloads/jdk-17.0.8_linux-x64_bin.tar.gz /usr/local/java/ # 进入目录并解压 cd /usr/local/java sudo tar -xvf jdk-17.0.8_linux-x64_bin.tar.gz
解压后,你会得到一个类似 jdk-17.0.8 的文件夹。
设置环境变量
这是最关键的一步,你需要编辑 ~/.bashrc 文件(仅对当前用户生效)或 /etc/environment 文件(对所有用户生效),这里我们以 ~/.bashrc 为例。
nano ~/.bashrc
在文件末尾添加以下内容(请务必将路径 jdk-17.0.8 修改为你实际解压出的文件夹名):
# Set Java environment variables export JAVA_HOME=/usr/local/java/jdk-17.0.8 export PATH=$PATH:$JAVA_HOME/bin
保存并退出(在 nano 中是 Ctrl+X,然后按 Y,再按 Enter)。
使配置生效
source ~/.bashrc
创建符号链接(可选但推荐)
为了方便管理和切换,可以创建一个符号链接指向 JAVA_HOME。
sudo update-alternatives --install /usr/bin/java java $JAVA_HOME/bin/java 100 sudo update-alternatives --install /usr/bin/javac javac $JAVA_HOME/bin/javac 100
这样,你就可以使用 sudo update-alternatives --config java 来切换了,就像方法一中一样。
验证 Java 安装
无论你使用哪种方法,最后都需要验证安装是否成功。
检查 Java 版本
java -version
如果安装成功,会显示你设置的 Java 版本信息,
openjdk version "17.0.8" 2025-07-18
OpenJDK Runtime Environment (build 17.0.8+7-Ubuntu-122.04)
OpenJDK 64-Bit Server VM (build 17.0.8+7-Ubuntu-122.04, mixed mode, sharing)
检查 JAVA_HOME 环境变量
echo $JAVA_HOME
如果输出为你设置的 Java 路径(/usr/lib/jvm/java-17-openjdk-amd64 或 /usr/local/java/jdk-17.0.8),则说明环境变量配置正确。
检查 javac 编译器
javac -version
应该会显示与 java -version 一致的版本号。
常见问题与解决方案
-
问题:
java: command not found- 原因:
java命令所在的目录没有添加到系统的PATH环境变量中。 - 解决:检查你的
~/.bashrc或/etc/environment文件,确保PATH变量包含了$JAVA_HOME/bin,然后运行source ~/.bashrc使其生效。
- 原因:
-
**问题:
JAVA_HOMEis not defined correctly`- 原因:
JAVA_HOME环境变量指向的路径不存在或不是有效的 JDK 主目录。 - 解决:运行
echo $JAVA_HOME检查路径,然后使用ls -l $JAVA_HOME确认该目录下是否存在bin、lib等文件夹,修正路径后,重新source配置文件。
- 原因:
-
问题:版本不匹配或无法切换
- 原因:多个 Java 版本没有被
update-alternatives正确管理。 - 解决:使用
sudo update-alternatives --config java和sudo update-alternatives --config javac来确保所有相关工具都指向同一个版本的 JDK。
- 原因:多个 Java 版本没有被
总结与建议
| 方法 | 优点 | 缺点 | 适用人群 |
|---|---|---|---|
| APT 包管理器 | - 安装简单,一条命令搞定 - 自动处理依赖 - 方便管理多个版本 - 系统统一管理,易于卸载 |
- 版本可能不是最新的(但LTS版本很新) - 无法安装特定厂商的JDK(如Oracle) |
绝大多数用户,特别是新手和开发者 |
| 手动下载 | - 可获得最新或特定版本的JDK - 灵活性高,可自定义安装位置 |
- 步骤繁琐,需要手动配置环境变量 - 卸载时需要手动清理 - 容易出错 |
需要特定JDK版本、企业环境用户或高级用户 |
给新手的最终建议:
直接使用 方法一(APT 包管理器) 安装 OpenJDK 17,这是最稳定、最省心的方式,足以满足 99% 的开发和学习需求,只有在项目明确要求使用特定版本的 Oracle JDK 时,才考虑使用方法二。
