杰瑞科技汇

java环境变量设置linux

核心概念:三个关键环境变量

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

java环境变量设置linux-图1
(图片来源网络,侵删)
  1. JAVA_HOME:

    • 作用: 指向你的 JDK 安装根目录的路径。
    • 为什么需要: 许多 Java 应用程序(如 Tomcat、Jetty、Maven、Gradle 等)和构建工具需要通过这个变量来找到 JDK 的位置,而不是直接调用 javajavac 命令,这使得配置更加灵活和标准化。
  2. PATH:

    • 作用: 操作系统的可执行文件搜索路径,当你在终端输入一个命令时,系统会按 PATH 中列出的顺序去查找对应的可执行文件。
    • 为什么需要: 我们需要将 JDK 的 bin 目录(包含 java, javac, jar 等命令)添加到 PATH 中,这样你就可以在任何目录下直接执行这些 Java 命令,而无需输入完整路径。
  3. CLASSPATH:

    • 作用: 指定 Java 虚拟机(JVM)在运行时查找类(.class 文件)和库(.jar 文件)的路径。
    • 重要提示: 在现代 Java 开发中,通常不需要手动设置 CLASSPATH,构建工具(如 Maven、Gradle)和应用程序服务器(如 Tomcat)会自动处理类路径,手动设置 CLASSPATH 容易导致版本冲突和意想不到的问题,本指南将重点放在 JAVA_HOMEPATH 上。

第一步:下载并安装 JDK

在配置环境变量之前,你必须先在 Linux 系统上安装好 JDK。

java环境变量设置linux-图2
(图片来源网络,侵删)

使用包管理器 (推荐新手)

这是最简单、最不容易出错的方法,包管理器会自动处理依赖关系。

对于 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 系统:

使用 dnfyum 包管理器。

# 对于 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 或其他发行版,可以手动下载并安装。

  1. 下载 JDK: 访问 Oracle JDK 官网Adoptium (Eclipse Temurin) 下载 .tar.gz 压缩包。

  2. 上传并解压: 使用 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 的确切路径。

  1. 如果你使用包管理器安装: 使用 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

  2. 如果你手动安装: 你的路径就是我们之前创建的符号链接路径,/opt/java/jdk

  3. 通用查找方法: 如果你不确定,可以使用 whichls 命令来查找。

    # 找到 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 为例进行讲解,这是最常用和最方便的方式。

  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=...: 定义 JAVA_HOME 变量。
    • export PATH=$JAVA_HOME/bin:$PATH: 将 $JAVA_HOME/bin 目录添加到 PATH 变量的最前面。$PATHPATH 变量原有的值,这样我们既保留了原有的路径,又新增了 JDK 的路径。
  3. 保存并退出:

    • nano 中,按 Ctrl + X,然后按 Y,最后按 Enter
    • vim 中,按 Esc,然后输入 wq,最后按 Enter
  4. 使配置立即生效: 你可以关闭当前终端再重新打开一个新的,或者执行以下命令让当前终端的配置立即加载。

    source ~/.bashrc

第四步:验证配置

这是最后也是最关键的一步,确保一切都配置正确。

  1. 验证 JAVA_HOME:

    echo $JAVA_HOME

    如果配置成功,它会输出你设置的 JDK 路径,/usr/lib/jvm/java-17-openjdk-amd64/opt/java/jdk

  2. 验证 PATH:

    echo $PATH

    检查输出中是否包含了 $JAVA_HOME/bin 路径,/usr/lib/jvm/java-17-openjdk-amd64/bin

  3. 验证 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 环境的配置!

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