杰瑞科技汇

Ubuntu环境变量如何配置Java?

核心概念

在开始之前,我们先理解两个最重要的环境变量:

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

    • 作用: 指向你的 Java Development Kit (JDK) 安装根目录的路径。
    • 为什么需要: 许多 Java 应用程序(如 Tomcat、Jetty、Maven、Gradle 等)和构建工具需要通过这个变量来找到 JDK 的位置,它提供了一个标准化的方式来定位 JDK,而不是依赖于系统 PATH 中的 java 命令。
    • : /usr/lib/jvm/java-11-openjdk-amd64/usr/lib/jvm/jdk-17
  2. PATH:

    • 作用: 操作系统在查找可执行文件时要搜索的目录列表。
    • 为什么需要: 当你在终端输入 java, javac, javadoc 等命令时,系统需要知道去哪里找到这些可执行文件,通过将 JDK 的 bin 目录添加到 PATH 中,你就可以在任何地方直接运行这些命令。
    • : $JAVA_HOME/bin 会被添加到 PATH 的前面。

第一步:检查当前 Java 安装情况

在配置之前,先确认你的系统上已经安装了 Java,并查看其版本和安装路径。

  1. 检查 Java 是否已安装:

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

    如果已安装,你会看到类似下面的输出:

    openjdk version "11.0.16" 2025-07-19
    OpenJDK Runtime Environment (build 11.0.16+8-post-Ubuntu-0ubuntu122.04)
    OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)
  2. 检查 javac (Java 编译器) 是否可用:

    javac -version

    如果输出正常,说明 JDK(包含编译器)已经安装,如果提示 command not found,可能你只安装了 JRE (Java Runtime Environment),需要安装完整的 JDK。

  3. 查找 Java 的安装路径: 这是最关键的一步,因为我们需要知道 JAVA_HOME 应该指向哪里。

    # 使用 update-java-alternatives 命令(推荐,适用于通过 apt 安装的 OpenJDK)
    update-java-alternatives -l

    输出会类似这样,显示了所有已安装的 Java 版本及其路径:

    java-11-openjdk-amd64 1111 /usr/lib/jvm/java-11-openjdk-amd64
    java-17-openjdk-amd64 1171 /usr/lib/jvm/java-17-openjdk-amd64

    这里的 /usr/lib/jvm/java-11-openjdk-amd64 就是我们要找的路径。

    如果上述命令无效,也可以尝试:

    # 查找 java 可执行文件的真实路径
    which java
    # 输出可能是 /usr/bin/java
    # 追溯到符号链接的原始位置
    ls -lr /usr/bin/java
    # 输出可能是 /etc/alternatives/java
    # 再追溯一次
    ls -lr /etc/alternatives/java
    # 最终会指向类似 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 的路径
    # 那么你的 JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64

第二步:安装 JDK (如果未安装)

如果你的系统没有 JDK,可以通过 apt 安装,以安装 OpenJDK 17 为例:

# 更新软件包列表
sudo apt update
# 安装 OpenJDK 17 JDK (包含运行时环境和编译器)
sudo apt install openjdk-17-jdk
# 验证安装
java -version
javac -version

第三步:配置环境变量

Ubuntu 中配置环境变量有几种方法,推荐使用第一种,因为它对所有用户生效且更可控。

为所有用户配置 (推荐)

这种方法通过创建一个独立的配置文件来实现,不会影响系统默认的 profile 文件。

  1. 创建配置文件:

    # 使用你喜欢的编辑器,如 nano 或 vim
    sudo nano /etc/profile.d/java.sh
  2. 添加环境变量: 在打开的文件中,输入以下内容。请务必将 YOUR_JAVA_VERSION 替换为你在第一步中查找到的实际路径

    #!/bin/bash
    # 设置 JAVA_HOME
    export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
    # 将 $JAVA_HOME/bin 添加到 PATH 的最前面
    # 使用 $JAVA_HOME 可以避免硬编码路径
    export PATH=$JAVA_HOME/bin:$PATH

    注意:

    • export 关键字使得变量对当前 shell 的子进程也可见。
    • $JAVA_HOME/bin 放在 $PATH 的最前面,可以确保系统优先使用我们指定的 JDK 版本,而不是系统中可能存在的其他版本。
  3. 保存并退出:

    • nano 中,按 Ctrl + X,然后按 Y,最后按 Enter
  4. 使配置生效:

    • 立即生效: 你可以注销并重新登录,或者运行以下命令来重新加载配置文件。

      source /etc/profile.d/java.sh
    • 验证配置:

      # 检查 JAVA_HOME 是否设置正确
      echo $JAVA_HOME
      # 应该输出你设置的路径,如 /usr/lib/jvm/java-17-openjdk-amd64
      # 检查 PATH 是否更新
      echo $PATH
      # 应该能看到 $JAVA_HOME/bin 在路径列表的最前面
      # 测试 java 和 javac 命令
      java -version
      javac -version

      现在输出的版本应该与你设置的 JAVA_HOME 中的版本一致。

仅对当前用户配置

如果你只想为当前登录的用户配置 Java 环境,可以修改 ~/.bashrc~/.profile 文件。

  1. 编辑 ~/.bashrc 文件:

    nano ~/.bashrc
  2. 在文件末尾添加以下内容:

    # Java Environment Variables
    export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
    export PATH=$JAVA_HOME/bin:$PATH
  3. 保存并退出,然后运行 source ~/.bashrc 使其生效。


第四步:切换 Java 版本 (高级)

如果你的系统上安装了多个 Java 版本(Java 8 和 Java 17),你可能需要在不同项目之间切换。

  1. 查看所有已安装的 Java 版本:

    update-java-alternatives -l
  2. 切换默认 Java 版本: 假设你想切换到 Java 11:

    sudo update-java-alternatives --set java-11-openjdk-amd64

    这会自动更新 /etc/alternatives/ 下的符号链接,并通常会重新设置 JAVA_HOMEPATH

  3. 验证切换:

    java -version
    # 现在应该显示 Java 11 的版本

常见问题排查 (FAQ)

Q1: 我设置了 JAVA_HOME,但为什么某些程序(如 Maven)还是找不到它?

A1: 可能的原因:

  • 没有 export: 确保在脚本中使用了 export JAVA_HOME=...,否则变量只对当前脚本有效。
  • 脚本未执行: 如果你修改了 ~/.bashrc,需要重新打开终端或运行 source ~/.bashrc
  • 路径错误: 再次检查 JAVA_HOME 的路径是否完全正确,特别是符号链接指向的最终路径。
  • 程序自身问题: 某些程序可能有自己的配置文件来指定 JDK 路径,而不是依赖环境变量。

Q2: 我用 sudo apt 安装了 Java,但找不到 JAVA_HOME

A2: 这很正常。apt 安装后不会自动设置 JAVA_HOME 环境变量,这正是本指南要解决的问题,你需要手动完成第三步的配置。

Q3: 配置后,echo $JAVA_HOME 没有输出。

A3:

  • 确认你执行了 source 命令或重新登录了。
  • 确认你编辑的文件是正确的(/etc/profile.d/java.sh 而不是 /etc/profile)。
  • 检查文件中是否有语法错误(例如拼写错误、缺少分号等)。

希望这份详细的指南能帮助你在 Ubuntu 上成功配置 Java 环境变量!

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