核心概念:三个关键环境变量
在开始之前,请先理解这三个核心环境变量的作用:

-
JAVA_HOME:- 作用: 指向你的 Java Development Kit (JDK) 安装根目录的路径,这是最重要的变量,很多 Java 应用程序和服务器(如 Tomcat, Jenkins)都依赖它来找到 Java。
- 值:
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/或/usr/local/java/jdk-11.0.13/。
-
PATH:- 作用: 操作系统查找可执行文件的路径列表,我们需要将 JDK 的
bin目录添加到PATH中,这样你才能在任何目录下直接使用java,javac,jar等命令。 - 修改方式: 在
PATH变量的开头或末尾添加$JAVA_HOME/bin。
- 作用: 操作系统查找可执行文件的路径列表,我们需要将 JDK 的
-
CLASSPATH:- 作用: 指定 Java 虚拟机 (JVM) 在查找类文件时需要搜索的路径,对于现代 Java 开发,通常不需要手动设置它,因为 JAR 文件会通过类路径参数传递,而当前目录 () 默认已包含在内。在绝大多数情况下,你可以不设置
CLASSPATH,如果设置不当,反而可能导致问题,我们将在本指南中省略它以保持简洁。
- 作用: 指定 Java 虚拟机 (JVM) 在查找类文件时需要搜索的路径,对于现代 Java 开发,通常不需要手动设置它,因为 JAR 文件会通过类路径参数传递,而当前目录 () 默认已包含在内。在绝大多数情况下,你可以不设置
第一步:安装 Java
在配置环境变量之前,你必须先安装 Java,在 CentOS 上,主要有两种方式:使用 YUM/DNF 安装(推荐)或手动安装。
使用 YUM/DNF 安装(推荐,简单易管理)
这是最简单、最推荐的方式,尤其是在生产服务器上,因为它可以方便地通过系统包管理器进行更新和维护。
-
检查系统版本:
- CentOS 7 / RHEL 7 使用
yum。 - CentOS 8 / RHEL 8 / CentOS Stream 使用
dnf。
- CentOS 7 / RHEL 7 使用
-
安装 OpenJDK (以 Java 11 为例): OpenJDK 是 Java 的开源实现,完全免费且功能齐全。
# 对于 CentOS 7 sudo yum install java-11-openjdk-devel # 对于 CentOS 8 / Stream sudo dnf install java-11-openjdk-devel
java-11-openjdk: 提供了 Java 运行时环境。java-11-openjdk-devel: 提供了 Java 开发工具,包括javac(编译器) 和头文件,如果你要开发 Java 程序,这个是必须的。
-
验证安装: 安装完成后,Java 命令通常会自动添加到系统的
PATH中。java -version javac -version
你应该能看到类似下面的输出:
[user@centos ~]$ java -version openjdk version "11.0.13" 2025-10-19 LTS OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing) [user@centos ~]$ javac -version javac 11.0.13
手动安装(适用于需要特定版本)
当你需要安装 Oracle JDK 或官方 OpenJDK 的特定版本时,可以使用此方法。
-
下载 JDK: 访问 Oracle JDK 下载页面 或 Eclipse Temurin (Adoptium) 下载页面 下载
.tar.gz压缩包,这里以 Eclipse Temurin 为例,它是一个高质量的 OpenJDK 发行版。# 示例:下载 JDK 17 (LTS) wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.5%2B8/OpenJDK17U-jdk_x64_linux_hotspot_17.0.5_8.tar.gz
-
创建安装目录并解压:
# 通常建议安装在 /usr/local 目录下 sudo mkdir -p /usr/local/java sudo tar -zxvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.5_8.tar.gz -C /usr/local/java/
解压后,目录结构类似
/usr/local/java/jdk-17.0.5+8/。 -
设置权限:
sudo chown -R root:root /usr/local/java/jdk-17.0.5+8
第二步:配置环境变量
我们将为安装好的 Java 配置环境变量。强烈建议为所有用户配置,而不是只为当前用户配置。
查找 Java 安装路径
在配置 JAVA_HOME 之前,你需要确切的安装路径。
-
如果你使用 YUM/DNF 安装:
# 使用 update-alternatives 命令查找 sudo update-alternatives --config java
运行此命令后,会列出所有已安装的 Java 版本及其路径,记下你想要使用的那个路径。
-
如果你手动安装: 路径就是你之前解压的目录,
/usr/local/java/jdk-17.0.5+8。 -
通用查找方法:
# 这个命令会显示 java 命令的实际路径 which java # 输出可能是 /usr/bin/java # 使用 ls -l 查看符号链接指向的真实位置 ls -l /usr/bin/java # 输出类似 lrwxrwxrwx. 1 root root 21 Nov 20 10:00 /usr/bin/java -> /etc/alternatives/java # 再查看 /etc/alternatives/java 的指向 ls -l /etc/alternatives/java # 输出类似 lrwxrwxrwx. 1 root root 47 Nov 20 10:00 /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-11.0.13.0.9-1.el7_9.x86_64/bin/java # 这里的路径就是 JAVA_HOME 的根目录 # JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.13.0.9-1.el7_9.x86_64
编辑环境变量文件
我们将编辑 /etc/profile 文件,这样所有登录到系统的用户都会加载这些环境变量。
sudo vim /etc/profile
在文件的末尾,添加以下内容:
# Java Environment Variables export JAVA_HOME=/path/to/your/java/jdk # <--- 将此路径替换为你自己的 JDK 根目录 export PATH=$JAVA_HOME/bin:$PATH
示例:
- YUM/DNF 安装的 Java 11:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.13.0.9-1.el7_9.x86_64 export PATH=$JAVA_HOME/bin:$PATH
- 手动安装的 JDK 17:
export JAVA_HOME=/usr/local/java/jdk-17.0.5+8 export PATH=$JAVA_HOME/bin:$PATH
保存并退出编辑器(在 vim 中是 wq)。
使配置立即生效
新用户登录时会自动加载 /etc/profile,但为了让当前用户的 shell 立即生效,可以运行:
source /etc/profile
第三步:验证配置
让我们来验证环境变量是否配置正确。
-
检查
JAVA_HOME:echo $JAVA_HOME
输出应该和你设置的路径一致。
-
检查
PATH:echo $PATH
确认输出的开头是
/path/to/your/java/jdk/bin:。 -
再次运行 Java 命令:
java -version javac -version
命令应该能正常执行,并且显示你配置的 Java 版本。
-
终极验证(可选): 运行一个简单的 Java 程序来确保
CLASSPATH也不是问题。# 创建一个测试文件 echo 'public class Test { public static void main(String[] args) { System.out.println("Java Environment is OK!"); } }' > Test.java # 编译 javac Test.java # 运行 java Test如果输出
Java Environment is OK!,那么恭喜你,一切都配置成功了!
故障排除
-
问题:
java: command not found- 原因:
PATH没有配置正确,或者你没有source配置文件。 - 解决: 检查
/etc/profile文件中的PATH变量,确保$JAVA_HOME/bin在其中,然后运行source /etc/profile。
- 原因:
-
问题:
bash: JAVA_HOME: undefined variable- 原因:
JAVA_HOME变量没有设置。 - 解决: 检查
/etc/profile文件中的export JAVA_HOME=行,确保路径正确。
- 原因:
-
问题: 版本不对,系统中存在多个 Java 版本。
- 原因: 系统的
alternatives机制可能指向了另一个版本。 - 解决: 使用
sudo update-alternatives --config java来选择你想要作为默认的 Java 版本,如果你手动安装的版本没有在列表中,可以手动添加它(这比较复杂,通常推荐使用 YUM/DNF 或 SDKMAN! 等工具来管理多版本 Java)。
- 原因: 系统的
| 步骤 | 命令/操作 | 说明 |
|---|---|---|
| 安装 | sudo yum install java-11-openjdk-devel |
使用包管理器安装 OpenJDK |
| 查找路径 | ls -l /etc/alternatives/java |
找到 JDK 的真实安装路径 |
| 编辑配置 | sudo vim /etc/profile |
为所有用户设置环境变量 |
| 添加变量 | 在文件末尾添加 JAVA_HOME 和 PATH |
定义 Java 路径并将其加入系统路径 |
| 生效配置 | source /etc/profile |
让当前 Shell 立即加载新配置 |
| 验证 | echo $JAVA_HOME & java -version |
检查变量和命令是否正常工作 |
遵循以上步骤,你就可以在 CentOS 系统上成功配置好 Java 环境。
