杰瑞科技汇

Linux如何正确配置Java环境变量?

三个关键环境变量

在开始之前,你需要了解三个最重要的环境变量:

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

    • 作用: 指向你的 JDK 安装根目录的路径,很多 Java 应用程序和服务器(如 Tomcat、Jetty)都依赖这个变量来找到 Java 的安装位置。
    • 示例: /usr/lib/jvm/java-11-openjdk-amd64
  2. PATH:

    • 作用: 操作系统查找可执行文件的路径列表,我们需要将 JDK 的 bin 目录添加到 PATH 中,这样你就可以在任何目录下直接使用 java, javac, jar 等命令。
    • 示例: 将 /usr/lib/jvm/java-11-openjdk-amd64/bin 添加到 PATH 的前面。
  3. CLASSPATH:

    • 作用: 指定 Java 虚拟机(JVM)在查找类(.class 文件)和库(.jar 文件)时需要搜索的路径。在现代 Java 开发中,通常不推荐手动设置 CLASSPATH,大多数构建工具(如 Maven, Gradle)和应用服务器会自动处理它,如果你不使用旧版应用,可以忽略此变量。

操作步骤

我们将分步完成整个过程:

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

第 1 步:安装 Java Development Kit (JDK)

你需要确保已经安装了 JDK,推荐使用 OpenJDK,它是开源且免费的。

对于 Ubuntu/Debian 系统:

# 更新软件包列表
sudo apt update
# 安装 OpenJDK 11 (你也可以安装其他版本,如 17, 21)
sudo apt install openjdk-11-jdk
# 验证安装
java -version
javac -version

对于 CentOS/RHEL/Fedora 系统:

# 首先安装 EPEL 仓库(如果尚未安装)
sudo yum install epel-release
# 安装 OpenJDK 11
sudo yum install java-11-openjdk-devel
# 验证安装
java -version
javac -version

第 2 步:查找 JDK 的安装路径

设置 JAVA_HOME 需要知道 JDK 的确切安装路径,最可靠的方法是使用 update-java-alternatives (Debian/Ubuntu) 或 alternatives (CentOS/RHEL) 命令。

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

对于 Ubuntu/Debian 系统:

# 列出所有已安装的 Java 版本及其路径
sudo update-java-alternatives --list

输出会类似这样:

java-1.11.0-openjdk-amd64  /usr/lib/jvm/java-1.11.0-openjdk-amd64  1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64-amd64

从中你可以找到路径,/usr/lib/jvm/java-1.11.0-openjdk-amd64,这就是你的 JAVA_HOME

对于 CentOS/RHEL 系统:

# 列出所有已安装的 Java 版本及其路径
sudo alternatives --config java

选择你想要使用的 Java 版本,然后查看 /usr/lib/jvm/ 目录,找到对应的 JDK 路径。

通用方法:

你也可以使用 lsreadlink 命令来查找:

# 找到 java 命令的实际路径
readlink -f $(which java)

输出会是类似 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 的路径,去掉末尾的 /bin/java,剩下的就是 JAVA_HOME

第 3 步:设置环境变量

这是最关键的一步,你有两种主要方式:仅对当前用户生效对系统所有用户生效


仅对当前用户生效(推荐)

这种方式更安全,不会影响其他用户,配置文件是用户主目录下的 ~/.bashrc~/.profile

  1. 打开配置文件 使用你喜欢的文本编辑器,如 nanovim

    nano ~/.bashrc
  2. 在文件末尾添加以下内容 请务必将 /path/to/your/jdk 替换为你上一步找到的实际 JDK 路径!

    # 设置 Java 环境变量
    export JAVA_HOME=/path/to/your/jdk
    export PATH=$JAVA_HOME/bin:$PATH
    • export JAVA_HOME=...: 定义变量并使其对当前 shell 及其子进程可用。
    • export PATH=$JAVA_HOME/bin:$PATH: 将 JDK 的 bin 目录添加到 PATH 变量的最前面。$PATH 表示保留 PATH 原有的值。
  3. 保存并退出nano 中,按 Ctrl + X,然后按 Y,最后按 Enter

  4. 使配置立即生效 你可以注销并重新登录,或者运行以下命令让当前 shell 重新加载配置文件:

    source ~/.bashrc
  5. 验证配置 运行以下命令,检查变量是否设置正确。

    echo $JAVA_HOME
    echo $PATH
    java -version

    echo $JAVA_HOME 应该会输出你设置的 JDK 路径。


对系统所有用户生效(需要管理员权限)

这种方式会影响系统中的所有用户,配置文件是 /etc/profile/etc/environment

方法 A:修改 /etc/profile (推荐)

  1. 使用 sudo 打开配置文件

    sudo nano /etc/profile
  2. 在文件末尾添加以下内容

    # 设置 Java 环境变量 (系统范围)
    export JAVA_HOME=/path/to/your/jdk
    export PATH=$JAVA_HOME/bin:$PATH
  3. 保存并退出

  4. 使配置立即生效 所有用户都需要注销并重新登录才能生效,或者,你可以运行 source /etc/profile,但这只会对当前终端生效。

方法 B:修改 /etc/environment (更简单)

这个文件是专门为环境变量设计的,语法更简单,不需要 export 关键字。

  1. 使用 sudo 打开配置文件

    sudo nano /etc/environment
  2. 添加或修改以下行

    JAVA_HOME="/path/to/your/jdk"
    PATH="/path/to/your/jdk/bin:$PATH"
    • 注意: 值必须用双引号括起来。
  3. 保存并退出

  4. 使配置立即生效 同样,所有用户都需要注销并重新登录。


常见问题与排查

问题 1:java -version 正常,但 echo $JAVA_HOME 没有输出

  • 原因: 你可能没有正确 source 配置文件,或者你修改了错误的配置文件(你修改了 ~/.bashrc 但在新的终端窗口里检查,而新窗口可能加载的是 ~/.profile)。
  • 解决: 确保你在修改配置文件后,执行了 source ~/.bashrc (或对应的配置文件),并在同一个终端窗口中进行验证。

问题 2:java 命令找不到,但 JDK 已安装

  • 原因: PATH 变量中没有包含 JDK 的 bin 目录。
  • 解决: 检查 echo $PATH 的输出,确保 /path/to/your/jdk/bin 在列表中,如果不在,请按照上述步骤重新配置 PATH

问题 3:系统中安装了多个 Java 版本,如何切换?

  • Ubuntu/Debian: 使用 update-java-alternatives
    # 查看所有可用版本
    sudo update-java-alternatives --list
    # 切换到指定版本
    sudo update-java-alternatives --set java-1.17.0-openjdk-amd64
  • CentOS/RHEL: 使用 alternatives
    # 查看所有可用版本
    sudo alternatives --config java
    # 根据提示输入数字选择即可
场景 推荐方法 优点 缺点
个人开发 修改 ~/.bashrc 安全,不影响他人 需要为每个新用户单独设置
服务器/多用户 修改 /etc/profile/etc/environment 一次设置,全局生效 影响所有用户,需要管理员权限

对于绝大多数开发者来说,方案一(修改 ~/.bashrc 是最常用和最推荐的方式,希望这份指南能帮助你顺利完成 Java 环境的配置!

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