杰瑞科技汇

Linux下Java环境变量如何配置?

核心概念

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

Linux下Java环境变量如何配置?-图1
(图片来源网络,侵删)
  1. JAVA_HOME:

    • 作用: 指向你的 Java 安装目录的根路径,许多 Java 应用程序(如 Tomcat、Maven)和构建工具都需要这个变量来找到 JDK。
    • : /usr/lib/jvm/java-11-openjdk-amd64/usr/local/java/jdk-11.0.12
  2. PATH:

    • 作用: 告诉操作系统去哪些目录中查找可执行的命令(如 java, javac, jar),我们将 JDK 的 bin 目录添加到 PATH 中,这样你就可以在任何位置直接运行这些命令。
    • 修改: 在 PATH 变量的开头或中间添加 $JAVA_HOME/bin
  3. CLASSPATH (在现代开发中较少使用):

    • 作用: 指定 Java 虚拟机在运行时需要查找的 .class 文件和 .jar 文件的位置,对于简单的 Java 命令行程序,通常不需要设置它,JVM 会自动在当前目录查找,但在复杂的项目或应用服务器中,它仍然很重要。
    • 注意: 在现代 Java 开发中,构建工具(如 Maven, Gradle)和 IDE(如 IntelliJ, Eclipse)已经极大地减少了对手动设置 CLASSPATH 的需求,本指南将重点放在 JAVA_HOMEPATH 上。

第一步:检查并安装 Java

在配置环境变量之前,请确保你已经安装了 Java,我们推荐使用 OpenJDK,它是 Java 的开源实现。

Linux下Java环境变量如何配置?-图2
(图片来源网络,侵删)

检查是否已安装 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),你需要先安装它。

    Linux下Java环境变量如何配置?-图3
    (图片来源网络,侵删)

安装 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 管理的版本)

如果你通过 aptyum 安装了 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-amd64JAVA_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-amd64jdk-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 编译器版本。

javajavac 命令都能被找到并正常执行,那么恭喜你,Java 环境变量配置成功了!


常见问题与解决方案

Q: java -version 可以用,但 echo $JAVA_HOME 是空的,或者配置后不生效。

A: 这通常意味着你修改的配置文件没有正确加载,请确保:

  1. 你修改的是正确的文件(如 ~/.bashrc)。
  2. 保存了文件。
  3. 运行了 source ~/.bashrc 或打开了新的终端。
  4. 检查文件中是否有拼写错误,特别是 JAVA_HOME 的路径。

Q: 我安装了多个 Java 版本,如何切换?

A: 使用 update-alternatives 工具来管理。

# 列出所有可用的 Java 版本
sudo update-alternatives --config java
# 同样,也可以配置 javac
sudo update-alternatives --config javac

选择你想要使用的版本编号,按回车即可,这会自动更新 JAVA_HOMEPATH 的链接。

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 是最简单、最合适的选择。

分享:
扫描分享到社交APP
上一篇
下一篇