杰瑞科技汇

Linux Java环境配置该如何正确操作?

  1. 安装 OpenJDK (推荐):适用于大多数开发者和企业应用,免费开源。
  2. 安装 Oracle JDK:适用于需要商业支持或特定 Oracle 许可证的场景。
  3. 使用 SDKMAN! (强烈推荐):一个命令行工具,可以轻松管理多个 Java 版本。
  4. 配置环境变量详解:深入理解 JAVA_HOMEPATH 的作用。
  5. 验证安装和常见问题:确保配置正确并解决可能遇到的问题。

安装 OpenJDK (最常用、最推荐)

OpenJDK 是 Java 的开源实现,与 Oracle JDK 功能上几乎完全一致,是绝大多数开发环境的首选。

Linux Java环境配置该如何正确操作?-图1
(图片来源网络,侵删)

步骤 1:更新软件包列表

在安装任何新软件之前,最好先更新系统的软件包索引。

sudo apt update

步骤 2:安装 OpenJDK

你可以安装多个版本的 Java,OpenJDK 11 和 OpenJDK 17,它们可以并存。

安装 OpenJDK 17 (LTS 版本,推荐)

sudo apt install openjdk-17-jdk
  • openjdk-17-jdk:包含 JRE (Java Runtime Environment) 和 JDK (Java Development Kit),也就是开发所需的编译器 (javac) 和工具。
  • 如果你只需要运行 Java 程序,可以安装 openjdk-17-jre

安装 OpenJDK 11 (另一个 LTS 版本)

sudo apt install openjdk-11-jdk

步骤 3:验证安装

安装完成后,使用以下命令验证 Java 是否安装成功。

java -version
javac -version

如果成功,你会看到类似以下的输出(版本号可能不同):

Linux Java环境配置该如何正确操作?-图2
(图片来源网络,侵删)
# java -version 的输出
openjdk version "17.0.2" 2025-01-18
OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-0ubuntu122.04, mixed mode, sharing)
# javac -version 的输出
javac 17.0.2

安装 Oracle JDK

如果你需要 Oracle 的商业支持或使用某些仅对 Oracle JDK 免费的功能,可以选择安装 Oracle JDK。

步骤 1:下载 Oracle JDK

  1. 访问 Oracle 官网下载页面:Oracle Java Development Kit Downloads
  2. 选择你需要的版本(JDK 17)和操作系统(Linux x64)。
  3. 接受许可协议,然后下载 .tar.gz 文件。

步骤 2:创建安装目录

我们将 JDK 安装在 /usr/lib/jvm/ 目录下。

sudo mkdir -p /usr/lib/jvm

步骤 3:解压并移动 JDK

假设你下载的文件是 jdk-17.0.2_linux-x64_bin.tar.gz,并且它位于你的 Downloads 文件夹中。

# 进入下载目录
cd ~/Downloads
# 解压文件
tar -xvf jdk-17.0.2_linux-x64_bin.tar.gz
# 将解压后的文件夹移动到 /usr/lib/jvm/
sudo mv jdk-17.0.2 /usr/lib/jvm/

步骤 4:配置环境变量

这是最关键的一步,我们需要设置 JAVA_HOME 和将 Java 相关命令添加到 PATH

Linux Java环境配置该如何正确操作?-图3
(图片来源网络,侵删)
  1. 查找 JDK 路径 你的 JDK 现在位于 /usr/lib/jvm/jdk-17.0.2,确认一下里面的 bin 目录是否存在。

  2. 编辑 ~/.bashrc 文件 这是一个针对当前用户的配置文件,推荐使用。

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

    # 设置 JAVA_HOME
    export JAVA_HOME=/usr/lib/jvm/jdk-17.0.2
    # 将 $JAVA_HOME/bin 添加到 PATH
    export PATH=$JAVA_HOME/bin:$PATH

    注意:请将 /usr/lib/jvm/jdk-17.0.2 替换为你实际的 JDK 路径。

  4. 使配置生效 保存并关闭文件后,运行以下命令让配置立即生效。

    source ~/.bashrc

歺骤 5:验证安装

echo $JAVA_HOME
java -version
javac -version

JAVA_HOME 输出正确的路径,javajavac 命令能正常工作,则说明安装成功。


使用 SDKMAN! (强烈推荐给开发者)

SDKMAN! 是一个用于在类 Unix 系统上管理多个软件开发套件(如 Java, Groovy, Gradle, Maven 等)的命令行工具,它可以让你轻松地在 Java 8, 11, 17 等版本之间切换。

步骤 1:安装 SDKMAN!

打开终端,执行以下命令:

curl -s "https://get.sdkman.io" | bash

安装完成后,根据提示执行:

source "$HOME/.sdkman/bin/sdkman-init.sh"

步骤 2:使用 SDKMAN! 安装 Java

安装 Java 变得异常简单。

  1. 列出所有可用的 Java 版本

    sdk list java

    你会看到一个长长的列表,包括各种 Oracle OpenJDK, Amazon Corretto, Microsoft 等版本。

  2. 安装一个 Java 版本 (Java 17)

    # 安装 OpenJDK 17 (LTS)
    sdk install java 17.0.2-tem
    # 安装 Amazon Corretto 17 (另一个优秀的 LTS 发行版)
    # sdk install java 17.0.2-amzn

    tem 代表 Temurin,是 Eclipse 基金会的 OpenJDK 发行版,质量很高。

  3. 切换 Java 版本 SDKMAN! 的最大优势之一就是版本切换。

    # 查看当前使用的 Java
    java -version
    # 切换到 Java 11
    sdk use java 11.0.15-tem
    # 再次查看版本,已经切换
    java -version
  4. 设置默认 Java 版本 如果你希望某个版本成为默认版本,可以设置为默认。

    sdk default java 17.0.2-tem

    之后打开新的终端,默认就会使用 Java 17。


环境变量详解 (JAVA_HOMEPATH)

理解这两个变量对于排查问题和手动配置至关重要。

PATH 环境变量

  • 作用:操作系统用来查找可执行文件的路径列表,当你输入一个命令(如 java)时,系统会在 PATH 中列出的所有目录里依次寻找这个命令。
  • 配置:我们将 Java 的 bin 目录($JAVA_HOME/bin)添加到 PATH 的最前面,这样,当你输入 java 时,系统会优先找到你配置的 Java,而不是系统可能自带的旧版本 Java。
  • 查看echo $PATH

JAVA_HOME 环境变量

  • 作用:这是一个约定,许多 Java 相关的工具(如 Tomcat, Jetty, Maven, Gradle)和应用程序服务器都需要通过这个变量来找到 JDK 的安装位置,它是一个指向 JDK 根目录的指针。
  • 配置export JAVA_HOME=/path/to/your/jdk
  • 为什么需要它?:假设你没有设置 JAVA_HOME,而是直接把 javajavac 命令放到了 PATH 里,如果某个应用需要调用 JAVA_HOME 来启动,它就找不到 JDK 的根目录,从而无法运行,设置 JAVA_HOME 让配置更加清晰和可移植。

最佳实践:将 JAVA_HOMEPATH 的配置都写入 ~/.bashrc/etc/environment(系统全局)中,这样每次登录都会自动加载。


常见问题与解决 (FAQ)

Q1: java -version 显示的不是我安装的版本,而是系统自带的旧版本。

原因PATH 中存在一个旧版本的 Java 路径,并且在你配置的 Java 路径之前

解决

  1. 检查 PATH 变量:echo $PATH
  2. 查看你配置的 Java 路径是否在 PATH 的最前面,如果不是,编辑 ~/.bashrc 文件,将 export PATH=$JAVA_HOME/bin:$PATH 这一行调整到文件中其他 PATH 相关配置的上方。
  3. 确保 source ~/.bashrc 已经执行,或者打开一个新的终端窗口。

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

解决

  • 如果使用 SDKMAN!:直接使用 sdk use java <version>
  • 如果手动安装:你需要修改 ~/.bashrc 文件,改变 JAVA_HOME 的值,source ~/.bashrc,这个过程比较繁琐,这也是为什么推荐使用 SDKMAN! 的原因。

Q3: 如何卸载 Java?

  • 对于 apt 安装的 OpenJDK

    sudo apt purge openjdk-17-jdk  # --purge 会删除配置文件
    sudo autoremove              # 清理不再需要的依赖包
  • 对于手动安装的 Oracle JDK

    # 删除 JDK 目录
    sudo rm -rf /usr/lib/jvm/jdk-17.0.2
    # 编辑 ~/.bashrc,删除之前添加的 JAVA_HOME 和 PATH 行
    nano ~/.bashrc
    # 保存后
    source ~/.bashrc
  • 对于 SDKMAN! 安装的 Java

    # 卸载特定版本
    sdk uninstall java 17.0.2-tem
    # 卸载 SDKMAN! 本身 (可选)
    sdk self uninstall
方法 优点 缺点 适用人群
apt 安装 OpenJDK 简单、快速、由系统包管理器管理,易于卸载和更新。 版本可能不是最新的,且难以在同一系统上管理多个版本。 初学者、只需要一个稳定 Java 版本的用户、系统管理员。
手动安装 Oracle JDK 可获得最新版本、特定厂商的 JDK。 配置繁琐(需手动设置环境变量),升级和卸载麻烦。 需要 Oracle JDK 特定功能或商业支持的用户。
使用 SDKMAN! 强烈推荐,轻松安装、切换和管理多个 Java 版本,支持多种发行版。 需要先安装 SDKMAN! 本身。 所有开发者,尤其是需要在不同 Java 项目间频繁切换的开发者。

对于大多数用户,apt 安装 OpenJDK 17 开始是最好的选择,如果你发现自己需要频繁切换 Java 版本,那么学习并使用 SDKMAN! 将会极大地提升你的工作效率

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