核心概念
在 Linux 中,Java 环境变量主要设置以下几个:

-
JAVA_HOME:- 作用: 指向你的 Java 安装目录的根路径,许多 Java 应用程序(如 Tomcat、Maven)和构建工具都需要这个变量来找到 JDK。
- 值:
/usr/lib/jvm/java-11-openjdk-amd64或/usr/local/java/jdk-11.0.12。
-
PATH:- 作用: 告诉操作系统去哪些目录中查找可执行的命令(如
java,javac,jar),我们将 JDK 的bin目录添加到PATH中,这样你就可以在任何位置直接运行这些命令。 - 修改: 在
PATH变量的开头或中间添加$JAVA_HOME/bin。
- 作用: 告诉操作系统去哪些目录中查找可执行的命令(如
-
CLASSPATH(在现代开发中较少使用):- 作用: 指定 Java 虚拟机在运行时需要查找的
.class文件和.jar文件的位置,对于简单的 Java 命令行程序,通常不需要设置它,JVM 会自动在当前目录查找,但在复杂的项目或应用服务器中,它仍然很重要。 - 注意: 在现代 Java 开发中,构建工具(如 Maven, Gradle)和 IDE(如 IntelliJ, Eclipse)已经极大地减少了对手动设置
CLASSPATH的需求,本指南将重点放在JAVA_HOME和PATH上。
- 作用: 指定 Java 虚拟机在运行时需要查找的
第一步:检查并安装 Java
在配置环境变量之前,请确保你已经安装了 Java,我们推荐使用 OpenJDK,它是 Java 的开源实现。

检查是否已安装 Java
打开终端,运行以下命令:
java -version
-
如果已安装,你会看到类似下面的输出,显示 Java 版本信息:
openjdk version "11.0.12" 2025-07-20 OpenJDK Runtime Environment (build 11.0.12+7-Ubuntu-0ubuntu0.20.04.1) OpenJDK 64-Bit Server VM (build 11.0.12+7-Ubuntu-0ubuntu0.20.04.1, mixed mode, sharing)如果已安装,请跳到第二步。
-
如果未安装(提示
command not found: java),你需要先安装它。
(图片来源网络,侵删)
安装 OpenJDK
使用 apt (适用于 Debian/Ubuntu 系统) 或 yum/dnf (适用于 CentOS/RHEL 系统) 来安装。
对于 Debian / Ubuntu 系统:
# 更新软件包列表 sudo apt update # 安装 OpenJDK 11 (这是一个长期支持版本) sudo apt install openjdk-11-jdk # 或者安装最新的 LTS 版本,Java 17 sudo apt install openjdk-17-jdk
对于 CentOS / RHEL / Fedora 系统:
# 对于 CentOS/RHEL 7/8, 使用 yum sudo yum install java-11-openjdk-devel # 对于 Fedora 或 RHEL 9+, 使用 dnf sudo dnf install java-11-openjdk-devel
安装完成后,再次运行 java -version 确认安装成功。
第二步:查找 Java 安装路径 (JAVA_HOME)
JAVA_HOME 必须精确指向 JDK 的安装目录,有几种方法可以找到这个路径。
使用 update-java-alternatives (推荐,用于 update-alternatives 管理的版本)
如果你通过 apt 或 yum 安装了 OpenJDK,系统通常会用 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-17-openjdk-amd64/bin/java 1112 manual mode
Press <enter> to keep the current choice[*], or type selection number:
星号 表示当前正在使用的版本,你需要的路径就是 Path 列出的值,去掉末尾的 /bin/java。
当前版本是 java-11-openjdk-amd64,
JAVA_HOME = /usr/lib/jvm/java-11-openjdk-amd64
使用 readlink 命令
这个方法非常可靠,因为它会解析符号链接,直接指向真实的安装路径。
readlink -f $(which java)
输出结果会直接显示 java 命令的完整路径,
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
你只需要去掉末尾的 /bin/java,剩下的就是 JAVA_HOME 的值:
JAVA_HOME = /usr/lib/jvm/java-11-openjdk-amd64
手动查找
如果你知道 JDK 可能安装在 /usr/lib/jvm/ 目录下,可以列出该目录的内容:
ls /usr/lib/jvm/
寻找类似 java-11-openjdk-amd64 或 jdk-11.0.12 这样的文件夹。
第三步:配置环境变量
我们将修改 ~/.bashrc 文件,这是一个用户级别的配置文件,只有当前用户生效,如果你希望所有用户都能使用,可以修改 /etc/environment 或 /etc/profile(需要 sudo 权限)。
打开配置文件
nano ~/.bashrc
(你也可以使用 vim, gedit 等其他编辑器)
在文件末尾添加以下内容
复制并粘贴到文件末尾。请务必将 <你的JAVA_HOME路径> 替换为你上一步中找到的实际路径。
# --- Java Environment Variables --- # 设置 JAVA_HOME export JAVA_HOME=<你的JAVA_HOME路径> # 将 JDK 的 bin 目录添加到 PATH 中 # $JAVA_HOME/bin 是引用上面设置的变量 # :$PATH 是将原来的 PATH 变量追加到后面 export PATH=$JAVA_HOME/bin:$PATH
示例:
如果你的 JAVA_HOME 是 /usr/lib/jvm/java-11-openjdk-amd64,那么文件内容应该是:
# --- Java Environment Variables --- export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH
保存并关闭文件
- 在
nano中,按Ctrl + X,然后按Y,最后按Enter。 - 在
vim中,按Esc,然后输入wq并按Enter。
使配置立即生效
新配置不会立即生效,你需要重新加载配置文件或打开一个新的终端。
source ~/.bashrc
或者,直接关闭当前终端,然后打开一个新的终端。
第四步:验证配置
这是最关键的一步,确保一切配置正确。
验证 JAVA_HOME
echo $JAVA_HOME
如果配置成功,它会输出你设置的 Java 路径,
/usr/lib/jvm/java-11-openjdk-amd64
验证 PATH
echo $PATH
在输出的路径列表中,你应该能看到 $JAVA_HOME/bin 对应的路径排在最前面,
/usr/lib/jvm/java-11-openjdk-amd64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
验证 Java 命令
java -version javac -version
java -version应该显示你安装的 Java 版本。javac -version应该显示对应的 Java 编译器版本。
java 和 javac 命令都能被找到并正常执行,那么恭喜你,Java 环境变量配置成功了!
常见问题与解决方案
Q: java -version 可以用,但 echo $JAVA_HOME 是空的,或者配置后不生效。
A: 这通常意味着你修改的配置文件没有正确加载,请确保:
- 你修改的是正确的文件(如
~/.bashrc)。 - 保存了文件。
- 运行了
source ~/.bashrc或打开了新的终端。 - 检查文件中是否有拼写错误,特别是
JAVA_HOME的路径。
Q: 我安装了多个 Java 版本,如何切换?
A: 使用 update-alternatives 工具来管理。
# 列出所有可用的 Java 版本 sudo update-alternatives --config java # 同样,也可以配置 javac sudo update-alternatives --config javac
选择你想要使用的版本编号,按回车即可,这会自动更新 JAVA_HOME 和 PATH 的链接。
Q: 应该修改哪个配置文件?~/.bashrc, ~/.profile, /etc/profile, 还是 /etc/environment?
A: 这是一个很好的问题,理解它们的区别很重要:
~/.bashrc: 用户级,只对当前用户在交互式 Bash Shell 中登录时生效。最常用,推荐个人用户使用。~/.profile: 用户级,对用户在登录时(非交互式或交互式 Shell)都会加载。~/.bash_profile不存在,Bash 会读取~/.profile。/etc/profile: 系统级,对所有用户在登录时都会加载,修改需要sudo。/etc/environment: 系统级,使用一种不同的格式(KEY="value"),不是 shell 脚本,对所有用户的所有 Shell 会话都生效。
对于大多数开发者,修改 ~/.bashrc 是最简单、最合适的选择。
