You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在安装双JDK的RHEL系统中通过Shell自动获取JDK8安装路径?

适配单/多JDK场景的RHEL系统JDK 8路径查询脚本

下面这个Shell脚本可以自动识别RHEL系统中无论是单JDK还是多JDK(默认是JDK11)的场景,找出所有JDK8的安装路径:

#!/bin/bash

# 初始化JDK8路径数组
jdk8_paths=()

# 1. 从alternatives中查找所有JDK 8的条目
if command -v alternatives &> /dev/null; then
    alternatives --display java | grep -E '(jdk|jre).*8' | awk '{print $1}' | while read -r link_path; do
        real_path=$(readlink -f "$link_path")
        # 确认路径属于JDK8
        if echo "$real_path" | grep -qE 'jdk1\.8|jre1\.8|jdk8|jre8'; then
            # 提取JDK根目录
            jdk_root=$(dirname "$(dirname "$real_path")")
            if [[ ! " ${jdk8_paths[@]} " =~ " ${jdk_root} " ]]; then
                jdk8_paths+=("$jdk_root")
            fi
        fi
    done
fi

# 2. 扫描/usr/java目录下的JDK8路径
if [ -d "/usr/java" ]; then
    for dir in /usr/java/*; do
        if [ -d "$dir" ] && echo "$dir" | grep -qE 'jdk1\.8|jre1\.8|jdk8|jre8'; then
            real_dir=$(readlink -f "$dir")
            if [[ ! " ${jdk8_paths[@]} " =~ " ${real_dir} " ]]; then
                jdk8_paths+=("$real_dir")
            fi
        fi
    done
fi

# 3. 从RPM包中查找JDK8路径(针对RPM安装的JDK)
if command -v rpm &> /dev/null; then
    rpm -qa | grep -E '(java-1.8.0|jdk1.8|jre1.8)' | while read -r pkg; do
        rpm -ql "$pkg" | grep -E 'bin/java$' | head -1 | while read -r bin_path; do
            jdk_root=$(dirname "$(dirname "$bin_path")")
            if echo "$jdk_root" | grep -qE '1\.8\.0'; then
                if [[ ! " ${jdk8_paths[@]} " =~ " ${jdk_root} " ]]; then
                    jdk8_paths+=("$jdk_root")
                fi
            fi
        done
    done
fi

# 输出结果
if [ ${#jdk8_paths[@]} -eq 0 ]; then
    echo "未找到JDK 8的安装路径"
else
    echo "找到以下JDK 8安装路径:"
    for path in "${jdk8_paths[@]}"; do
        echo "- $path"
    done
fi

脚本说明

  • alternatives扫描:针对多JDK通过alternatives管理的场景,列出所有Java备选项,筛选出JDK8相关的链接,解析真实路径后提取根目录,避免重复添加。
  • /usr/java目录扫描:覆盖手动安装到该目录的JDK8,直接匹配目录命名规则,获取真实路径。
  • RPM包查询:适配RHEL系统通过yum/rpm安装的JDK8,从包文件列表中定位java可执行文件,反向推导JDK根目录。
  • 去重处理:确保同一个JDK路径不会被多次输出。

使用步骤

  1. 把上面的代码保存成find_jdk8.sh文件
  2. 给脚本加执行权限:chmod +x find_jdk8.sh
  3. 直接运行:./find_jdk8.sh

内容的提问来源于stack exchange,提问作者JCDani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 12:12:51