杰瑞科技汇

Linux下Java目录如何配置与管理?

/usr/lib/jvm/usr/bin 是最核心的两个目录,下面我将详细解释不同安装方式下 Java 的位置、如何查找以及如何管理。


核心目录概览

目录 用途 常见安装方式
/usr/lib/jvm/ Java 虚拟机 的主目录,所有 JDK/JRE 的安装包都会被解压或安装到这里。 apt (Debian/Ubuntu), yum/dnf (CentOS/RHEL), 手动安装
/usr/bin/ 系统命令目录,包含了 java, javac, jar 等可执行文件的符号链接 所有方式
/etc/alternatives/ 替代系统,一个中央管理的符号链接目录,用于解决多个版本冲突。 update-alternatives (Debian/Ubuntu), alternatives (CentOS/RHEL)
/opt/ 可选软件目录,一些手动下载的、非标准的 JDK(如 Oracle JDK, Adoptium Eclipse Temurin)会安装在这里。 手动安装
$HOME/.sdkman/ 用户级 SDK 管理工具,SDKMAN 工具管理的 Java 版本会下载并解压到用户主目录下的这个文件夹中。 SDKMAN (用户级)
/usr/local/java/ 本地编译软件目录,有时用户会手动将 JDK 解压到这里,以便全局使用。 手动安装 (较少见)

不同安装方式的具体路径

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

这是在 Linux 发行版上最常见、最标准的安装方式。

  • 在 Debian/Ubuntu (使用 apt)

    1. 安装 JDK:

      # 安装 OpenJDK 11
      sudo apt install openjdk-11-jdk
      # 安装 OpenJDK 17
      sudo apt install openjdk-17-jdk
    2. 安装位置:

      • JDK 主目录: /usr/lib/jdk-11//usr/lib/jvm/java-11-openjdk-amd64/ (具体路径可能因版本和架构而异)
      • 可执行文件: /usr/bin/java, /usr/bin/javac 等是真实文件或指向 /etc/alternatives/ 的符号链接。
    3. 如何查找:

      # 使用 apt 列出所有已安装的 Java 包
      apt list --installed | grep openjdk
      # 查找所有 java 可执行文件的位置
      which java
      # 输出: /usr/bin/java
      # 查看符号链接指向的真实位置
      ls -l /usr/bin/java
      # 输出: /usr/bin/java -> /etc/alternatives/java
      # 查看最终指向的 JDK
      ls -l /etc/alternatives/java
      # 输出: /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-amd64/bin/java
  • 在 CentOS/RHEL/Fedora (使用 yumdnf)

    1. 安装 JDK:

      # 安装 OpenJDK 11
      sudo yum install java-11-openjdk-devel
      # 安装 OpenJDK 17 (使用 dnf)
      sudo dnf install java-17-openjdk-devel
    2. 安装位置:

      • JDK 主目录: /usr/lib/jvm/java-11-openjdk-11.0.x.x.x86_64/
      • 可执行文件: /usr/bin/java, /usr/bin/javac 等。
    3. 如何查找:

      # 使用 yum 列出已安装的 Java 包
      yum list installed | grep java-11-openjdk
      # 使用 alternatives 命令管理 (核心工具)
      sudo alternatives --config java
      sudo alternatives --config javac

手动安装 (下载 .tar.gz 或 .zip)

  1. 下载 JDK:Adoptium (Eclipse Temurin), Oracle 等网站下载 .tar.gz 文件。

  2. 解压并放置:

    • 推荐位置: /opt/ 目录,用于存放第三方软件。
      # 假设下载的文件是 jdk-17.0.8_linux-x64_bin.tar.gz
      sudo tar -xvf jdk-17.0.8_linux-x64_bin.tar.gz -C /opt/
    • 解压后,/opt/ 目录下会出现类似 /opt/jdk-17.0.8 的文件夹。
  3. 配置环境变量:

    • 为了让系统找到新的 Java,需要修改 /etc/profile/etc/environment 文件,或者在 ~/.bashrc, ~/.zshrc 等用户配置文件中添加。
      # 编辑用户配置文件
      nano ~/.bashrc

    在文件末尾添加以下内容 (请根据你的实际路径修改)

    export JAVA_HOME=/opt/jdk-17.0.8 export PATH=$JAVA_HOME/bin:$PATH

    保存后,让配置生效

    source ~/.bashrc

  4. 如何查找:

    # 检查 JAVA_HOME
    echo $JAVA_HOME
    # 输出: /opt/jdk-17.0.8
    # 检查 java 命令路径
    which java
    # 输出: /home/your_user/.sdkman/candidates/java/current/bin/java (SDKMAN 优先) 或 /opt/jdk-17.0.8/bin/java

使用 SDKMAN! (开发者首选)

SDKMAN! 是一个强大的命令行工具,用于在类 Unix 系统上管理多个软件开发工具包(包括 Java)。

  1. 安装 SDKMAN!:

    curl -s "https://get.sdkman.io" | bash
    source "$HOME/.sdkman/bin/sdkman-init.sh"
  2. 安装和管理 Java:

    # 列出所有可用的 Java 版本
    sdk list java
    # 安装一个特定的 Java 版本 (17.0.8-tem)
    sdk install java 17.0.8-tem
    # 切换当前使用的 Java 版本
    sdk use java 17.0.8-tem
    # 查看当前使用的 Java
    java -version
    # 输出:
    # OpenJDK Runtime Environment Temurin-17.0.8+7 (build 17.0.8+7)
    # OpenJDK 64-Bit Server VM Temurin-17.0.8+7 (build 17.0.8+7, mixed mode, sharing)
    # 查看安装路径
    echo $JAVA_HOME
    # 输出: /home/your_user/.sdkman/candidates/java/current
  3. 安装位置:

    • 所有 SDKMAN! 安装的软件都会下载并解压到用户主目录下的 ~/.sdkman/candidates/ 文件夹中,Java 会在 ~/.sdkman/candidates/java/
    • ~/.sdkman/candidates/java/current 是一个符号链接,指向当前激活的版本(如 0.8-tem)。

如何检查和确认 Java 安装位置

无论你的 Java 是如何安装的,都可以通过以下命令来确认其位置:

  1. java -version

    • 作用: 显示当前正在使用的 Java 版本和供应商信息。
    • 输出示例:
      openjdk version "17.0.8" 2025-07-18
      OpenJDK Runtime Environment Temurin-17.0.8+7 (build 17.0.8+7)
      OpenJDK 64-Bit Server VM Temurin-17.0.8+7 (build 17.0.8+7, mixed mode, sharing)
  2. echo $JAVA_HOME

    • 作用: 显示 JAVA_HOME 环境变量的值,这是许多 Java 应用(如 Tomcat, Maven)启动时需要的关键变量。
    • 输出示例:
      /usr/lib/jvm/java-11-openjdk-amd64
      # 或
      /opt/jdk-17.0.8
      # 或
      /home/your_user/.sdkman/candidates/java/current
    • 注意: JAVA_HOME 未设置,此命令将不输出任何内容。
  3. which java

    • 作用: 显示 java 命令的绝对路径。
    • 输出示例:
      /usr/bin/java
      # 或
      /opt/jdk-17.0.8/bin/java
  4. ls -l $(which java)

    • 作用: 一个组合命令,先找到 java 命令的位置,然后用 ls -l 查看它是否是符号链接,以及它指向的真实位置,这对于理解 alternatives 系统非常有用。
    • 输出示例:
      lrwxrwxrwx 1 root root  20 Aug 25 10:00 /usr/bin/java -> /etc/alternatives/java
安装方式 主要目录 管理工具 特点
包管理器 /usr/lib/jvm/, /usr/bin/ apt, yum, update-alternatives 系统级,标准,易于管理,但版本可能不是最新的。
手动安装 /opt/, /usr/local/java/ 手动配置 PATHJAVA_HOME 灵活,可安装任意版本,但需要自己处理环境变量和版本切换。
SDKMAN! ~/.sdkman/candidates/ sdk 命令 用户级,多版本管理极其方便,是开发者的首选工具。

对于大多数用户,特别是初学者,使用包管理器安装是最简单、最不容易出错的方式,对于需要频繁切换 Java 版本的开发者,SDKMAN! 是不二之选。

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