核心概念
在开始之前,我们需要理解两个最重要的环境变量:

JAVA_HOME: 指向你的 Java Development Kit (JDK) 安装根目录的路径,很多 Java 应用程序和构建工具(如 Maven、Tomcat)需要通过这个变量来找到 JDK。PATH: 操作系统的可执行文件搜索路径,我们需要将 JDK 的bin目录(包含java,javac等命令)添加到PATH中,这样你才能在终端的任何位置直接运行这些命令。
第一步:安装 JDK
在配置环境变量之前,你必须先安装好 JDK,在 Linux 上,有几种常见的安装方式。
使用包管理器(推荐,适用于 Ubuntu/Debian)
这是最简单、最推荐的方法,可以自动处理依赖关系。
-
更新包列表
sudo apt update
-
安装 OpenJDK 你可以安装不同的版本,OpenJDK 11 或 17。
(图片来源网络,侵删)# 安装 OpenJDK 17 (LTS 版本,推荐) sudo apt install openjdk-17-jdk # 或者安装 OpenJDK 11 (LTS 版本) # sudo apt install openjdk-11-jdk
-
验证安装 安装完成后,JDK 通常会自动被配置好,你可以跳到 第三步:验证安装 来检查。
手动下载安装(适用于所有发行版,更灵活)
如果你需要特定版本的 Oracle JDK 或者其他 OpenJDK 发行版(如 Amazon Corretto, Azul Zulu),可以手动下载安装。
-
下载 JDK 访问 Oracle JDK 下载页面 或 Adoptium (Eclipse Temurin) 下载页面(推荐,开源免费)。 下载
.tar.gz格式的压缩包,下载到你的主目录的Downloads文件夹。 -
创建安装目录 我们会将 JDK 安装在
/usr/lib/jvm/目录下。sudo mkdir -p /usr/lib/jvm
-
解压 JDK 假设你的 JDK 压缩包名为
jdk-17.0.8_linux-x64_bin.tar.gz,并且位于~/Downloads。# 解压到 /usr/lib/jvm/ 目录 sudo tar -xzvf ~/Downloads/jdk-17.0.8_linux-x64_bin.tar.gz -C /usr/lib/jvm/
解压后,目录结构会类似
/usr/lib/jvm/jdk-17.0.8/。 -
创建符号链接(可选但推荐) 创建一个符号链接可以方便地切换或升级 JDK 版本,而无需修改环境变量。
# 创建一个指向当前 JDK 版本的通用链接 sudo ln -s /usr/lib/jvm/jdk-17.0.8/ /usr/lib/jvm/java-17-openjdk-amd64
我们将在设置
JAVA_HOME时使用这个链接路径,它更稳定。
第二步:设置环境变量
这是核心步骤,我们将修改 Shell 的配置文件来添加 JAVA_HOME 和 PATH。
选择配置文件
-
~/.bashrc:- 作用域: 仅对当前用户生效。
- 何时加载: 每次你打开一个新的交互式终端(Terminal)时都会加载。
- 推荐场景: 大多数开发者选择这个,因为它只影响当前用户,更安全,并且每次开新终端都能立即生效。
-
~/.bash_profile或~/.profile:- 作用域: 仅对当前用户生效。
- 何时加载: 当你登录系统时(通过 SSH 登录,或在图形界面登录后打开的第一个终端)。
- 注意:
~/.bash_profile不存在,Bash 会尝试读取~/.profile,如果两者都存在,~/.bash_profile优先级更高。
-
/etc/profile或/etc/environment:- 作用域: 对所有用户生效。
- 何时加载: 系统启动时或用户登录时。
- 注意: 需要管理员权限 (
sudo),除非你有特殊需求(为服务器上的所有服务设置统一环境),否则不建议普通用户修改。
本指南将以 ~/.bashrc 为例,因为它是最常用和最方便的。
编辑配置文件
-
打开
.bashrc文件 使用你喜欢的文本编辑器,如nano或vim。nano ~/.bashrc
-
添加 Java 环境变量 在文件末尾添加以下内容。请务必根据你的实际安装路径修改
JAVA_HOME的值。# --- Java Environment Variables Start --- # 设置 JDK 的安装根目录 # 如果你使用的是包管理器安装的,路径通常是: export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 # 如果你手动安装,路径可能是: # export JAVA_HOME=/usr/lib/jvm/jdk-17.0.8 # 将 JDK 的 bin 目录添加到 PATH 的最前面 # 这样可以确保系统优先使用我们设置的 JDK 版本 export PATH=$JAVA_HOME/bin:$PATH # --- Java Environment Variables End ---
解释:
export: 将变量设置为环境变量,使其可以被当前 Shell 启动的所有子进程访问。$JAVA_HOME/bin: 引用JAVA_HOME变量,并拼接上/bin路径。$PATH: 引用现有的PATH变量。- 在 Linux 中,
PATH中的路径用冒号分隔。 $JAVA_HOME/bin:$PATH: 将 JDK 的bin目录放在PATH的最前面,这可以防止系统上可能存在的其他旧版 Java 干扰。
-
保存并退出
- 在
nano中,按Ctrl + X,然后按Y,最后按Enter。 - 在
vim中,按Esc,然后输入wq并按Enter。
- 在
-
让配置立即生效 你可以关闭当前终端然后重新打开一个,或者执行以下命令让当前终端的配置立即加载:
source ~/.bashrc
第三步:验证安装
让我们检查环境变量是否设置正确。
-
检查
JAVA_HOMEecho $JAVA_HOME
如果设置成功,它会输出你设置的 JDK 路径,
/usr/lib/jvm/java-17-openjdk-amd64 -
检查
PATHecho $PATH
在输出的路径列表的开头,你应该能看到
$JAVA_HOME/bin的实际路径。 -
检查 Java 版本 这是最重要的验证步骤。
java -version
javac -version
如果一切正常,你会看到类似下面的输出,显示你安装的 Java 版本:
openjdk version "17.0.8" 2025-07-18 OpenJDK Runtime Environment (build 17.0.8+7-Ubuntu-0ubuntu122.04) OpenJDK 64-Bit Server VM (build 17.0.8+7-Ubuntu-0ubuntu122.04, mixed mode, sharing)java -version和javac -version的版本号应该一致。
常见问题与解决方法
问题1:java: command not found
- 原因:
PATH环境变量中没有包含 JDK 的bin目录。 - 解决:
- 检查
~/.bashrc文件中的PATH变量是否正确设置。 - 运行
source ~/.bashrc使配置生效。 - 重新打开终端再试。
- 确认 JDK 是否已成功安装,使用
ls -l /usr/lib/jvm/查看目录是否存在。
- 检查
问题2:JAVA_HOME 指向了错误的路径
- 原因:
JAVA_HOME的路径与实际的 JDK 安装路径不匹配。 - 解决:
- 使用
ls -l $JAVA_HOME命令检查路径是否正确,如果命令报错或显示的不是 JDK 目录,说明路径错了。 - 使用
ls /usr/lib/jvm/找到正确的 JDK 目录名称。 - 编辑
~/.bashrc文件,修正JAVA_HOME的值,source ~/.bashrc。
- 使用
问题3:多个 Java 版本冲突
-
现象: 运行
java -version显示的版本不是你想要的。 -
原因: 系统上可能安装了多个版本的 Java,或者某个旧版 Java 的路径在
PATH中排在了你的新 JDK 之前。 -
解决:
-
使用
update-alternatives工具(在基于 Debian/Ubuntu 的系统上)来管理多个 Java 版本。# 检查当前管理的 Java 版本 sudo update-alternatives --config java # 检查管理的 javac 版本 sudo update-alternatives --config javac
这个工具会允许你在安装的多个版本之间进行选择。
-
如果你手动配置了
PATH,确保你的$JAVA_HOME/bin位于PATH的最前面,如我们上面所做的那样。
-
通过以上步骤,你应该就能在 Linux 系统上成功配置好 Java 的环境变量了。
