杰瑞科技汇

ubuntu配置java环境变量

第一步:安装 Java

在配置环境变量之前,你首先需要安装 Java 开发工具包,在 Ubuntu 上,你有几种主流的选择。

ubuntu配置java环境变量-图1
(图片来源网络,侵删)

使用 APT 包管理器安装(推荐)

这是最简单、最推荐的方法,特别是对于初学者,它会自动处理依赖关系,并方便后续更新。

  1. 更新软件包列表 打开终端,运行以下命令:

    sudo apt update
  2. 安装默认的 JDK Ubuntu 的软件源中通常有 OpenJDK,这是 Java 的开源实现,你可以直接安装一个默认版本(OpenJDK 17,这是一个当前非常主流的 LTS 版本)。

    sudo apt install openjdk-17-jdk
    • openjdk: Java 开源开发工具包。
    • 17: 指定 Java 版本,你也可以安装 openjdk-11-jdk, openjdk-8-jdk 等。
    • jdk: 包含了编译器 (javac)、运行时环境 (java) 和开发所需的库。
  3. 验证安装 安装完成后,检查 Java 是否已正确安装。

    ubuntu配置java环境变量-图2
    (图片来源网络,侵删)
    java -version

    你应该能看到类似以下的输出,显示 Java 的版本信息:

    openjdk version "17.0.10" 2025-01-16
    OpenJDK Runtime Environment (build 17.0.10+7-Ubuntu-120.04.1)
    OpenJDK 64-Bit Server VM (build 17.0.10+7-Ubuntu-120.04.1, mixed mode, sharing)

    也检查一下编译器:

    javac -version

    输出应为:

    javac 17.0.10

手动下载安装(适用于需要特定版本)

如果你需要 Oracle JDK 或其他 APT 源中没有的版本,可以手动下载安装。

ubuntu配置java环境变量-图3
(图片来源网络,侵删)
  1. 从官网下载 JDK 访问 Oracle 官网Adoptium (Eclipse Temurin) 下载 .tar.gz 格式的压缩包。

  2. 解压并移动到合适位置 我们会将 JDK 安装在 /usr/lib/jvm/ 目录下。

    # 假设你下载的文件在 ~/Downloads 目录下
    cd ~/Downloads
    sudo mkdir -p /usr/lib/jvm
    sudo tar -xzf jdk-17.0.10_linux-x64_bin.tar.gz -C /usr/lib/jvm/

    解压后,/usr/lib/jvm/ 目录下会多出一个类似 jdk-17.0.10 的文件夹。

  3. 创建符号链接(可选但推荐) 为了方便路径管理和切换版本,可以创建一个符号链接。

    sudo ln -s /usr/lib/jvm/jdk-17.0.10 /usr/lib/jvm/java-17-oracle

    这样,你就可以通过一个固定的路径 /usr/lib/jvm/java-17-oracle 来引用这个 JDK。


第二步:配置环境变量

这是本教程的核心部分,Java 主要需要两个环境变量:

  • JAVA_HOME: 指向 JDK 的安装根目录,很多 Java 应用(如 Tomcat, Maven)和构建工具都需要这个变量来找到 JDK。
  • PATH: 包含了可执行文件(如 java, javac)的路径,系统会在这个路径中查找命令。

重要提示:用户级 vs. 系统级

  • 用户级(推荐): 只对当前登录的用户生效,修改 ~/.bashrc~/.profile 文件,优点是不会影响其他用户,且无需 sudo 权限。
  • 系统级: 对系统所有用户生效,修改 /etc/environment/etc/profile 文件,需要 sudo 权限,修改后可能需要重启或重新登录才能生效。

对于绝大多数个人开发者,推荐使用用户级配置。

用户级配置(推荐)

  1. 找到 JDK 的安装路径 如果你使用的是 apt 安装的 OpenJDK,路径通常是 /usr/lib/jvm/java-17-openjdk-amd64/,你可以用以下命令找到它:

    # 这个命令会列出所有已安装的 JDK
    sudo update-java -l

    或者直接查看 /usr/lib/jvm/ 目录:

    ls /usr/lib/jvm/

    假设你的 JDK 路径是 /usr/lib/jvm/java-17-openjdk-amd64

  2. 编辑配置文件 我们来编辑 ~/.bashrc 文件,这样每次打开新的终端时,环境变量都会自动加载。

    nano ~/.bashrc

    (你也可以使用 vimgedit 等你喜欢的编辑器)

  3. 在文件末尾添加变量 将光标移到文件末尾,添加以下内容。请务必将 YOUR_JDK_PATH 替换为你自己找到的实际路径。

    # Set Java environment variables
    export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
    export PATH=$JAVA_HOME/bin:$PATH
    • export JAVA_HOME=...: 设置 JAVA_HOME
    • export PATH=$JAVA_HOME/bin:$PATH: 将 $JAVA_HOME/bin 目录添加到 PATH 的最前面。$PATH 会保留原有的路径,确保其他命令仍然可用。
  4. 保存并退出

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

    source ~/.bashrc
  6. 验证配置 现在来验证环境变量是否设置成功。

    # 检查 JAVA_HOME
    echo $JAVA_HOME
    # 应该输出: /usr/lib/jvm/java-17-openjdk-amd64
    # 检查 PATH 中是否包含 java 命令
    which java
    # 应该输出: /usr/lib/jvm/java-17-openjdk-amd64/bin/java
    # 再次检查 Java 版本
    java -version

    如果一切正常,恭喜你,配置成功了!

系统级配置(不推荐,除非必要)

如果你需要所有用户都能使用这个 Java 环境,或者你无法通过 source 命令让配置生效(例如在服务器上),可以选择系统级配置。

  1. 编辑 /etc/environment 文件 这个文件是系统级的,所有用户登录时都会加载。

    sudo nano /etc/environment
  2. 添加变量 在文件中添加以下内容。注意:这里使用的是 key="value" 的格式,并且没有 export 关键字。

    JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"
    PATH="$JAVA_HOME/bin:$PATH"

    重要:如果你在 /etc/environment 中修改了 PATH,它会完全覆盖系统原有的 PATH,最好将 $JAVA_HOME/bin 添加到 PATH 的前面,而不是完全替换它。

  3. 保存并退出 同样,Ctrl + X -> Y -> Enter

  4. 重启或重新登录 修改此文件后,你需要重新登录或重启系统才能使更改生效,你也可以尝试运行 sudo systemctl restart systemd-logind(但这不一定总是有效),最稳妥的方式是重新登录。

  5. 验证配置 验证步骤与用户级配置相同。

    echo $JAVA_HOME
    which java
    java -version

第三步:管理多个 Java 版本

如果你在同一台机器上安装了多个 Java 版本(JDK 8 和 JDK 17),你可能需要在不同项目之间切换使用。

使用 update-java-alternatives(APT 安装的 JDK)

Ubuntu 的 apt 安装的 JDK 会自动被 update-java-alternatives 工具管理。

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

    sudo update-java-alternatives --list

    输出可能如下:

    java-1.8.0-openjdk-amd64   1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64
    java-11-openjdk-amd64      1831       /usr/lib/jvm/java-11-openjdk-amd64
    java-17-openjdk-amd64      2001       /usr/lib/jvm/java-17-openjdk-amd64
  2. 切换默认版本 假设你想切换到 Java 11:

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

    这个命令会自动更新 JAVA_HOMEPATH 中的链接,使 javajavac 命令指向新版本。

  3. 验证切换

    java -version

手动管理(手动安装的 JDK)

如果你手动安装了 JDK,你可以通过创建/删除符号链接来管理。

  1. 创建指向默认版本的链接 你想让 /usr/lib/jvm/java-17-oracle 成为默认版本:

    sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-oracle/bin/java 1
    sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-17-oracle/bin/javac 1
    • --install: 创建一个替代链接。
    • 第一个参数是链接的目标(如 /usr/bin/java)。
    • 第二个参数是链接的名称(java)。
    • 第三个参数是实际的可执行文件路径。
    • 最后一个数字是优先级(数字越大,优先级越高)。
  2. 手动选择版本 如果你安装了多个版本并创建了链接,可以这样选择:

    sudo update-alternatives --config java

    系统会列出所有可用的版本,并提示你选择一个。


总结与排查

步骤 命令/操作 说明
安装 sudo apt install openjdk-17-jdk 推荐使用 APT 安装。
配置 nano ~/.bashrc 编辑用户级配置文件。
export JAVA_HOME=/path/to/jdk 添加 JDK 路径。
export PATH=$JAVA_HOME/bin:$PATH 将 JDK 的 bin 目录加入 PATH。
source ~/.bashrc 使配置立即生效。
验证 echo $JAVA_HOME 检查 JAVA_HOME 变量。
which java 检查 java 命令的路径。
java -version 最终确认 Java 版本。

常见问题排查

  • echo $JAVA_HOME 输出为空

    • 检查你编辑的文件是否正确(~/.bashrc vs /etc/environment)。
    • 检查你是否已经运行了 source ~/.bashrc 或重新登录了。
    • 检查文件中是否有拼写错误或路径错误。
  • java -version 报错 "command not found"

    • 检查 PATH 变量是否设置正确:echo $PATH,确保 $JAVA_HOME/bin 在列表中。
    • 检查 JAVA_HOME 指向的路径下是否存在 bin 目录,以及 java 文件是否存在。
    • 如果你手动安装了 JDK,可能需要手动创建符号链接到 /usr/bin/
  • JAVA_HOME is not set and no 'java' command could be found in your PATH

    • 这通常是某些 Java 应用(如 Maven, Tomcat)启动时的错误,请确保你已正确配置了 JAVA_HOMEPATH 环境变量,并且已经让配置生效。
分享:
扫描分享到社交APP
上一篇
下一篇