第一步:安装 Java
在配置环境变量之前,你首先需要安装 Java 开发工具包,在 Ubuntu 上,你有几种主流的选择。

使用 APT 包管理器安装(推荐)
这是最简单、最推荐的方法,特别是对于初学者,它会自动处理依赖关系,并方便后续更新。
-
更新软件包列表 打开终端,运行以下命令:
sudo apt update
-
安装默认的 JDK Ubuntu 的软件源中通常有 OpenJDK,这是 Java 的开源实现,你可以直接安装一个默认版本(OpenJDK 17,这是一个当前非常主流的 LTS 版本)。
sudo apt install openjdk-17-jdk
openjdk: Java 开源开发工具包。17: 指定 Java 版本,你也可以安装openjdk-11-jdk,openjdk-8-jdk等。jdk: 包含了编译器 (javac)、运行时环境 (java) 和开发所需的库。
-
验证安装 安装完成后,检查 Java 是否已正确安装。
(图片来源网络,侵删)java -version
你应该能看到类似以下的输出,显示 Java 的版本信息:
openjdk version "17.0.10" 2025-01-16 OpenJDK Runtime Environment (build 17.0.10+7-Ubuntu-120.04.1) OpenJDK 64-Bit Server VM (build 17.0.10+7-Ubuntu-120.04.1, mixed mode, sharing)也检查一下编译器:
javac -version
输出应为:
javac 17.0.10
手动下载安装(适用于需要特定版本)
如果你需要 Oracle JDK 或其他 APT 源中没有的版本,可以手动下载安装。

-
从官网下载 JDK 访问 Oracle 官网 或 Adoptium (Eclipse Temurin) 下载
.tar.gz格式的压缩包。 -
解压并移动到合适位置 我们会将 JDK 安装在
/usr/lib/jvm/目录下。# 假设你下载的文件在 ~/Downloads 目录下 cd ~/Downloads sudo mkdir -p /usr/lib/jvm sudo tar -xzf jdk-17.0.10_linux-x64_bin.tar.gz -C /usr/lib/jvm/
解压后,
/usr/lib/jvm/目录下会多出一个类似jdk-17.0.10的文件夹。 -
创建符号链接(可选但推荐) 为了方便路径管理和切换版本,可以创建一个符号链接。
sudo ln -s /usr/lib/jvm/jdk-17.0.10 /usr/lib/jvm/java-17-oracle
这样,你就可以通过一个固定的路径
/usr/lib/jvm/java-17-oracle来引用这个 JDK。
第二步:配置环境变量
这是本教程的核心部分,Java 主要需要两个环境变量:
JAVA_HOME: 指向 JDK 的安装根目录,很多 Java 应用(如 Tomcat, Maven)和构建工具都需要这个变量来找到 JDK。PATH: 包含了可执行文件(如java,javac)的路径,系统会在这个路径中查找命令。
重要提示:用户级 vs. 系统级
- 用户级(推荐): 只对当前登录的用户生效,修改
~/.bashrc或~/.profile文件,优点是不会影响其他用户,且无需sudo权限。 - 系统级: 对系统所有用户生效,修改
/etc/environment或/etc/profile文件,需要sudo权限,修改后可能需要重启或重新登录才能生效。
对于绝大多数个人开发者,推荐使用用户级配置。
用户级配置(推荐)
-
找到 JDK 的安装路径 如果你使用的是
apt安装的 OpenJDK,路径通常是/usr/lib/jvm/java-17-openjdk-amd64/,你可以用以下命令找到它:# 这个命令会列出所有已安装的 JDK sudo update-java -l
或者直接查看
/usr/lib/jvm/目录:ls /usr/lib/jvm/
假设你的 JDK 路径是
/usr/lib/jvm/java-17-openjdk-amd64。 -
编辑配置文件 我们来编辑
~/.bashrc文件,这样每次打开新的终端时,环境变量都会自动加载。nano ~/.bashrc
(你也可以使用
vim或gedit等你喜欢的编辑器) -
在文件末尾添加变量 将光标移到文件末尾,添加以下内容。请务必将
YOUR_JDK_PATH替换为你自己找到的实际路径。# Set Java environment variables export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME=...: 设置JAVA_HOME。export PATH=$JAVA_HOME/bin:$PATH: 将$JAVA_HOME/bin目录添加到PATH的最前面。$PATH会保留原有的路径,确保其他命令仍然可用。
-
保存并退出
- 在
nano中,按Ctrl + X,然后按Y,最后按Enter。 - 在
vim中,按Esc,然后输入wq并按Enter。
- 在
-
使配置生效 你可以关闭当前终端窗口并重新打开一个,或者运行以下命令让当前终端立即加载配置:
source ~/.bashrc
-
验证配置 现在来验证环境变量是否设置成功。
# 检查 JAVA_HOME echo $JAVA_HOME # 应该输出: /usr/lib/jvm/java-17-openjdk-amd64 # 检查 PATH 中是否包含 java 命令 which java # 应该输出: /usr/lib/jvm/java-17-openjdk-amd64/bin/java # 再次检查 Java 版本 java -version
如果一切正常,恭喜你,配置成功了!
系统级配置(不推荐,除非必要)
如果你需要所有用户都能使用这个 Java 环境,或者你无法通过 source 命令让配置生效(例如在服务器上),可以选择系统级配置。
-
编辑
/etc/environment文件 这个文件是系统级的,所有用户登录时都会加载。sudo nano /etc/environment
-
添加变量 在文件中添加以下内容。注意:这里使用的是
key="value"的格式,并且没有export关键字。JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64" PATH="$JAVA_HOME/bin:$PATH"
重要:如果你在
/etc/environment中修改了PATH,它会完全覆盖系统原有的PATH,最好将$JAVA_HOME/bin添加到PATH的前面,而不是完全替换它。 -
保存并退出 同样,
Ctrl + X->Y->Enter。 -
重启或重新登录 修改此文件后,你需要重新登录或重启系统才能使更改生效,你也可以尝试运行
sudo systemctl restart systemd-logind(但这不一定总是有效),最稳妥的方式是重新登录。 -
验证配置 验证步骤与用户级配置相同。
echo $JAVA_HOME which java java -version
第三步:管理多个 Java 版本
如果你在同一台机器上安装了多个 Java 版本(JDK 8 和 JDK 17),你可能需要在不同项目之间切换使用。
使用 update-java-alternatives(APT 安装的 JDK)
Ubuntu 的 apt 安装的 JDK 会自动被 update-java-alternatives 工具管理。
-
查看所有已安装的版本
sudo update-java-alternatives --list
输出可能如下:
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64 java-11-openjdk-amd64 1831 /usr/lib/jvm/java-11-openjdk-amd64 java-17-openjdk-amd64 2001 /usr/lib/jvm/java-17-openjdk-amd64 -
切换默认版本 假设你想切换到 Java 11:
sudo update-java-alternatives --set java-11-openjdk-amd64
这个命令会自动更新
JAVA_HOME和PATH中的链接,使java和javac命令指向新版本。 -
验证切换
java -version
手动管理(手动安装的 JDK)
如果你手动安装了 JDK,你可以通过创建/删除符号链接来管理。
-
创建指向默认版本的链接 你想让
/usr/lib/jvm/java-17-oracle成为默认版本:sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-oracle/bin/java 1 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-17-oracle/bin/javac 1
--install: 创建一个替代链接。- 第一个参数是链接的目标(如
/usr/bin/java)。 - 第二个参数是链接的名称(
java)。 - 第三个参数是实际的可执行文件路径。
- 最后一个数字是优先级(数字越大,优先级越高)。
-
手动选择版本 如果你安装了多个版本并创建了链接,可以这样选择:
sudo update-alternatives --config java
系统会列出所有可用的版本,并提示你选择一个。
总结与排查
| 步骤 | 命令/操作 | 说明 |
|---|---|---|
| 安装 | sudo apt install openjdk-17-jdk |
推荐使用 APT 安装。 |
| 配置 | nano ~/.bashrc |
编辑用户级配置文件。 |
export JAVA_HOME=/path/to/jdk |
添加 JDK 路径。 | |
export PATH=$JAVA_HOME/bin:$PATH |
将 JDK 的 bin 目录加入 PATH。 | |
source ~/.bashrc |
使配置立即生效。 | |
| 验证 | echo $JAVA_HOME |
检查 JAVA_HOME 变量。 |
which java |
检查 java 命令的路径。 |
|
java -version |
最终确认 Java 版本。 |
常见问题排查
-
echo $JAVA_HOME输出为空- 检查你编辑的文件是否正确(
~/.bashrcvs/etc/environment)。 - 检查你是否已经运行了
source ~/.bashrc或重新登录了。 - 检查文件中是否有拼写错误或路径错误。
- 检查你编辑的文件是否正确(
-
java -version报错 "command not found"- 检查
PATH变量是否设置正确:echo $PATH,确保$JAVA_HOME/bin在列表中。 - 检查
JAVA_HOME指向的路径下是否存在bin目录,以及java文件是否存在。 - 如果你手动安装了 JDK,可能需要手动创建符号链接到
/usr/bin/。
- 检查
-
JAVA_HOMEis not set and no 'java' command could be found in your PATH- 这通常是某些 Java 应用(如 Maven, Tomcat)启动时的错误,请确保你已正确配置了
JAVA_HOME和PATH环境变量,并且已经让配置生效。
- 这通常是某些 Java 应用(如 Maven, Tomcat)启动时的错误,请确保你已正确配置了
