概览:为什么需要配置环境变量?
Java 程序(尤其是命令行工具,如 javac, java, jar)需要知道 Java 的安装位置在哪里,环境变量就是告诉系统这些工具路径的“路标”。

主要有两个核心环境变量需要配置:
JAVA_HOME: 指向 Java 安装根目录的路径,许多 Java 应用服务器(如 Tomcat, Jetty)和构建工具(如 Maven, Gradle)都需要这个变量来定位 JDK。PATH: 系统的可执行文件搜索路径,我们将 Java 的bin目录添加到PATH中,这样你就可以在终端的任何位置直接输入java,javac等命令,而无需输入完整路径。
第一步:安装 Java
在配置环境变量之前,你必须先安装 Java,在 Ubuntu 上,推荐使用 apt 包管理器来安装 OpenJDK,这是 Java 的开源实现。
更新软件包列表
打开终端,首先更新你的包索引:
sudo apt update
安装 OpenJDK
根据你的需求选择安装版本。OpenJDK 17 是一个长期支持版本,推荐大多数用户使用。

安装 OpenJDK 17 (推荐):
sudo apt install openjdk-17-jdk
其他版本:
- OpenJDK 11 (LTS):
sudo apt install openjdk-11-jdk - OpenJDK 8 (LTS):
sudo apt install openjdk-8-jdk
安装过程会自动下载并安装 JDK,包括 JRE (Java Runtime Environment) 和开发工具(如 javac, jar)。
验证安装
安装完成后,验证 Java 是否已成功安装。
java -version
如果安装成功,你会看到类似下面的输出:
openjdk version "17.0.10" 2025-01-16
OpenJDK Runtime Environment (build 17.0.10+7-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 17.0.10+7-Ubuntu-120.04, mixed mode, sharing)
你也可以检查编译器:
javac -version
输出应该类似:
javac 17.0.10
第二步:查找 Java 安装路径
配置 JAVA_HOME 需要知道 Java 的确切安装路径,最可靠的方法是使用 update-java-alternatives 工具,它会显示所有已安装的 Java 版本及其路径。
在终端中运行:
sudo update-java-alternatives --list
你会看到类似下面的输出,/usr/lib/jvm/java-17-openjdk-amd64 就是我们要找的路径。
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
java-17-openjdk-amd64 2004 /usr/lib/jvm/java-17-openjdk-amd64
注意: 请记录下你想要使用的 Java 版本对应的路径,上面的例子中,我们使用 java-17-openjdk-amd64 的路径 /usr/lib/jvm/java-17-openjdk-amd64。
第三步:配置环境变量
Ubuntu 中有多个地方可以设置环境变量,它们的作用范围不同。
/etc/environment: 全局系统级环境变量,对所有用户和所有启动的程序都有效。~/.bashrc(或~/.profile,~/.zshrc): 用户级环境变量,只对当前用户有效,并且只在交互式 shell 启动时加载。
推荐方法:对于普通用户,修改 ~/.bashrc 是最安全、最常用的方式。
为当前用户配置 (推荐)
-
打开配置文件 使用
gedit(图形界面) 或nano(终端) 编辑器打开你的bashrc文件。nano ~/.bashrc
-
在文件末尾添加变量 将光标移动到文件末尾,添加以下内容。请务必将
/path/to/your/java替换为你上一步查找到的实际路径!# 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表示原有的PATH值,这样做可以确保优先使用我们配置的 Java 命令。
-
保存并退出
- 在
nano中,按Ctrl + X,然后按Y,最后按Enter。
- 在
-
使配置生效 新开一个终端窗口,或者运行以下命令让当前终端的配置立即生效:
source ~/.bashrc
为整个系统配置 (需要 sudo)
如果你需要为所有用户配置 Java 环境,可以修改 /etc/environment 文件。
-
使用
sudo打开文件sudo nano /etc/environment
-
添加或修改变量 文件内容可能已经有一些变量定义(如
PATH),你需要添加JAVA_HOME,并确保PATH包含 Java 的bin目录。 文件内容应如下所示(同样,替换路径!):PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"
注意: 在这个文件中,我们不需要手动添加
$JAVA_HOME/bin到PATH,因为大多数现代 Linux 发行版(包括 Ubuntu)在解析PATH时会自动处理JAVA_HOME,但为了确保万无一失,最稳妥的方式是像上面一样,将JAVA_HOME/bin直接写入PATH,通常系统会自动处理。 -
保存并退出
- 在
nano中,按Ctrl + X,然后按Y,最后按Enter。
- 在
-
重启系统或重新登录 这种系统级的配置修改后,通常需要重启系统或注销后重新登录才能对所有用户完全生效。
第四步:验证环境变量配置
配置完成后,最重要的一步是验证它是否正确。
-
检查
JAVA_HOMEecho $JAVA_HOME
如果配置成功,它会输出你设置的 Java 路径:
/usr/lib/jvm/java-17-openjdk-amd64 -
检查
PATHecho $PATH
在输出的路径列表中,你应该能看到
$JAVA_HOME/bin对应的路径(/usr/lib/jvm/java-17-openjdk-amd64/bin)位于最前面。 -
再次运行 Java 命令 确保 Java 命令仍然正常工作:
java -version javac -version
常见问题与解决方案
问题1:echo $JAVA_HOME 没有输出
- 原因: 配置文件没有生效,或者路径设置错误。
- 解决:
- 确认你保存了配置文件。
- 运行
source ~/.bashrc(或重启终端)。 - 检查
~/.bashrc文件中的路径是否正确,有没有拼写错误。
问题2:系统上有多个 Java 版本,我想切换
- 解决: 使用
update-java-alternatives工具可以轻松切换。- 查看所有版本:
sudo update-java-alternatives --list - 切换到你想要的版本,例如切换到 Java 11:
sudo update-java-alternatives --set java-1.8.0-openjdk-amd64
- 切换后,你的
JAVA_HOME和PATH会自动更新,无需手动修改配置文件。
- 查看所有版本:
问题3:我安装了多个 JDK (如 Oracle JDK 和 OpenJDK),如何管理?
- 解决: 除了
update-java-alternatives,你也可以使用第三方工具如 SDKMAN! 来更好地管理多个 SDK (包括 Java, Maven, Gradle 等),它为每个用户提供了独立的、易于切换的环境。
| 步骤 | 操作 | 命令/文件 | 说明 |
|---|---|---|---|
| 安装 | 安装 OpenJDK | sudo apt install openjdk-17-jdk |
获取 Java 运行时和编译工具。 |
| 查找路径 | 查找 Java 安装路径 | sudo update-java-alternatives --list |
获取 JAVA_HOME 需要的精确路径。 |
| 配置变量 | 为当前用户配置 | ~/.bashrc |
添加 export JAVA_HOME=... 和 export PATH=... |
| 为系统所有用户配置 | /etc/environment |
需要 sudo,修改后需重启或重登录。 |
|
| 生效配置 | 使配置立即生效 | source ~/.bashrc |
或直接打开一个新的终端窗口。 |
| 验证 | 检查变量 | echo $JAVA_HOME 和 echo $PATH |
确认变量设置正确。 |
遵循以上步骤,你就可以在 Ubuntu 系统上成功配置好 Java 环境变量了,对于大多数开发者来说,方法一(修改 ~/.bashrc) 是最简单且最合适的选择。
