核心概念:三个关键环境变量
在开始之前,你需要了解 Java 开发环境依赖的三个核心环境变量:

-
JAVA_HOME:- 作用: 指向你的 JDK 安装根目录的路径。
- 为什么需要: 许多 Java 应用程序(如 Tomcat、Jetty、Maven、Gradle 等)和构建工具需要通过这个变量来找到 JDK 的位置,而不是直接调用
java或javac命令,这使得配置更加灵活和标准化。
-
PATH:- 作用: 操作系统的可执行文件搜索路径,当你在终端输入一个命令时,系统会按
PATH中列出的顺序去查找对应的可执行文件。 - 为什么需要: 我们需要将 JDK 的
bin目录(包含java,javac,jar等命令)添加到PATH中,这样你就可以在任何目录下直接执行这些 Java 命令,而无需输入完整路径。
- 作用: 操作系统的可执行文件搜索路径,当你在终端输入一个命令时,系统会按
-
CLASSPATH:- 作用: 指定 Java 虚拟机(JVM)在运行时查找类(
.class文件)和库(.jar文件)的路径。 - 重要提示: 在现代 Java 开发中,通常不需要手动设置
CLASSPATH,构建工具(如 Maven、Gradle)和应用程序服务器(如 Tomcat)会自动处理类路径,手动设置CLASSPATH容易导致版本冲突和意想不到的问题,本指南将重点放在JAVA_HOME和PATH上。
- 作用: 指定 Java 虚拟机(JVM)在运行时查找类(
第一步:下载并安装 JDK
在配置环境变量之前,你必须先在 Linux 系统上安装好 JDK。

使用包管理器 (推荐新手)
这是最简单、最不容易出错的方法,包管理器会自动处理依赖关系。
对于 Debian / Ubuntu 系统:
使用 apt 包管理器,推荐使用 apt 而不是 apt-get。
# 更新软件包列表 sudo apt update # 安装 OpenJDK (安装 JDK 17) sudo apt install openjdk-17-jdk # 你也可以安装其他版本, # sudo apt install openjdk-11-jdk # sudo apt install openjdk-8-jdk
对于 CentOS / RHEL / Fedora 系统:
使用 dnf 或 yum 包管理器。
# 对于 RHEL/CentOS 8+, Fedora sudo dnf install java-17-openjdk-devel # 对于 RHEL/CentOS 7 sudo yum install java-17-openjdk-devel # 你也可以安装其他版本, # sudo dnf install java-11-openjdk-devel # sudo dnf install java-1.8.0-openjdk-devel
手动安装 (高级用户)
如果你需要特定版本的 Oracle JDK 或其他发行版,可以手动下载并安装。
-
下载 JDK: 访问 Oracle JDK 官网 或 Adoptium (Eclipse Temurin) 下载
.tar.gz压缩包。 -
上传并解压: 使用
scp或其他工具将文件上传到你的 Linux 服务器,然后在终端中解压。# 假设下载的文件在 /home/your_user/Downloads 目录下 # 创建一个安装目录,/opt sudo mkdir -p /opt/java # 解压到 /opt/java 目录 # 请将 jdk-17.0.8_linux-x64_bin.tar.gz 替换成你下载的文件名 sudo tar -zxvf /home/your_user/Downloads/jdk-17.0.8_linux-x64_bin.tar.gz -C /opt/java/ # 解压后,/opt/java 目录下会有一个类似 jdk-17.0.8 的文件夹 # 我们可以为它创建一个更友好的符号链接 sudo ln -s /opt/java/jdk-17.0.8 /opt/java/jdk
第二步:查找 JDK 安装路径
无论你使用哪种方法安装,都需要找到 JDK 的确切路径。
-
如果你使用包管理器安装: 使用
update-alternatives工具可以轻松管理多个 Java 版本。# 查看所有已安装的 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-11-openjdk-amd64/bin/java 1111 auto mode 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode 2 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1112 manual mode选择你想要使用的版本(输入数字),然后按回车,记录下
Path对应的目录,/usr/lib/jvm/java-17-openjdk-amd64,这个路径就是你的JAVA_HOME。 -
如果你手动安装: 你的路径就是我们之前创建的符号链接路径,
/opt/java/jdk。 -
通用查找方法: 如果你不确定,可以使用
which和ls命令来查找。# 找到 java 命令的位置 which java # 输出可能是: /usr/bin/java # 找到 /usr/bin/java 的真实指向 ls -l /usr/bin/java # 输出可能是: /usr/bin/java -> /etc/alternatives/java # 继续追踪 ls -l /etc/alternatives/java # 输出可能是: /etc/alternatives/java -> /usr/lib/jvm/java-17-openjdk-amd64/bin/java
/usr/lib/jvm/java-17-openjdk-amd64就是你的 JDK 根目录。
第三步:设置环境变量
Linux 中有多个文件可以设置环境变量,选择哪个文件取决于你的需求。
| 文件路径 | 作用范围 | 何时生效 | 优点 | 缺点 |
|---|---|---|---|---|
/etc/profile |
系统所有用户 | 用户登录时 | 全局生效,永久有效 | 修改后需要重启或重新登录才能生效 |
/etc/environment |
系统所有用户 | 用户登录时 | 专门为环境变量设计,语法简单(KEY="value") |
需要重启或重新登录 |
~/.bashrc |
当前用户 | 打开新的终端 | 只对当前用户生效,无需重启,修改后 source 即可 |
只对使用 Bash shell 的用户有效 |
~/.profile |
当前用户 | 用户登录时 | 类似 .bashrc,但更通用 |
修改后需要重启或重新登录 |
~/.bash_profile |
当前用户 | 用户登录时 | 如果存在,优先于 .profile |
修改后需要重启或重新登录 |
推荐做法:
- 系统管理员/服务器环境: 使用
/etc/profile或/etc/environment。 - 开发者个人电脑: 使用
~/.bashrc,因为它最灵活,无需重启。
下面以 ~/.bashrc 为例进行讲解,这是最常用和最方便的方式。
-
打开配置文件: 使用你喜欢的文本编辑器,如
nano或vim。nano ~/.bashrc
-
在文件末尾添加以下内容: 请务必将
/path/to/your/jdk替换为你自己查找到的 JDK 路径!# 设置 Java 环境变量 export JAVA_HOME=/path/to/your/jdk export PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME=...: 定义JAVA_HOME变量。export PATH=$JAVA_HOME/bin:$PATH: 将$JAVA_HOME/bin目录添加到PATH变量的最前面。$PATH是PATH变量原有的值,这样我们既保留了原有的路径,又新增了 JDK 的路径。
-
保存并退出:
- 在
nano中,按Ctrl + X,然后按Y,最后按Enter。 - 在
vim中,按Esc,然后输入wq,最后按Enter。
- 在
-
使配置立即生效: 你可以关闭当前终端再重新打开一个新的,或者执行以下命令让当前终端的配置立即加载。
source ~/.bashrc
第四步:验证配置
这是最后也是最关键的一步,确保一切都配置正确。
-
验证
JAVA_HOME:echo $JAVA_HOME
如果配置成功,它会输出你设置的 JDK 路径,
/usr/lib/jvm/java-17-openjdk-amd64或/opt/java/jdk。 -
验证
PATH:echo $PATH
检查输出中是否包含了
$JAVA_HOME/bin路径,/usr/lib/jvm/java-17-openjdk-amd64/bin。 -
验证 Java 命令:
java -version javac -version
如果配置正确,这两个命令会分别显示你安装的 Java 版本信息。
java -version 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) javac -version javac 17.0.8
如果以上所有命令都输出了正确的结果,那么恭喜你,Java 环境变量已经成功设置!
总结与故障排除
-
问题:
java: command not found- 原因:
PATH没有配置正确。 - 解决: 检查
~/.bashrc文件中的PATH变量是否正确,并确保执行了source ~/.bashrc。
- 原因:
-
问题:
JAVA_HOME指向的路径不正确。- 原因: 路径拼写错误或 JDK 安装在了非预期位置。
- 解决: 重新检查 JDK 的安装路径,并修正
JAVA_HOME的值。
-
问题: 不同用户的环境变量不一致。
- 原因: 你可能修改了系统级文件(如
/etc/profile),但当前用户使用的是~/.bashrc。 - 解决: 明确你的配置目标(全局还是个人),并确保修改了正确的文件。
- 原因: 你可能修改了系统级文件(如
-
问题: 卸载旧版 JDK 后,
java -version仍然显示旧版本。- 原因:
update-alternatives配置或环境变量文件中仍保留着旧路径。 - 解决: 使用
sudo update-alternatives --config java切换到正确的版本,或检查并清理环境变量文件中的旧配置。
- 原因:
希望这份详细的指南能帮助你顺利完成 Java 环境的配置!
