安装jdk步骤

发布于:2025-05-10 ⋅ 阅读:(8) ⋅ 点赞:(0)

将Linux安装jdk的步骤放入shell脚本中

#!/bin/bash
# 阿里云服务器专用 - 全自动安装 OpenJDK 1.8(无交互)
# 仅支持 yum 系系统(CentOS/RHEL/Alibaba Cloud Linux)

# 检查 root 权限
if [ "$(id -u)" -ne 0 ]; then
    echo "错误:请使用 sudo 或以 root 用户运行!" >&2
    exit 1
fi

# 检查系统类型
if ! command -v yum &>/dev/null; then
    echo "错误:仅支持 yum 系系统(CentOS/RHEL/Alibaba Cloud Linux)!" >&2
    exit 1
fi

# 卸载旧版 JDK(静默操作)
echo "正在清理旧版 JDK..."
yum remove -y java-* &>/dev/null
rm -rf /usr/lib/jvm/* /etc/profile.d/jdk.sh

# 安装 OpenJDK 1.8(静默安装)
echo "正在安装 OpenJDK 1.8..."
yum install -y java-1.8.0-openjdk-devel &>/dev/null

if ! command -v java &>/dev/null; then
    echo "安装失败!请检查 yum 源配置。" >&2
    exit 1
fi

# 自动配置环境变量
JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
cat > /etc/profile.d/jdk.sh <<EOF
export JAVA_HOME=$JAVA_HOME
export JRE_HOME=\$JAVA_HOME/jre
export CLASSPATH=.:\$JAVA_HOME/lib:\$JRE_HOME/lib
export PATH=\$PATH:\$JAVA_HOME/bin
EOF

source /etc/profile.d/jdk.sh

# 验证安装
echo "安装完成!OpenJDK 版本:"
java -version
echo -e "\nJAVA_HOME: $JAVA_HOME"

另一种方式实现,阿里云服务器

#!/bin/bash
# Description: 一键安装 JDK 8(支持 Oracle JDK 和 OpenJDK,适配阿里云环境)
# Author: Your Name
# Date: $(date +%Y-%m-%d)

# 检查是否为 root 用户
if [ "$(id -u)" -ne 0 ]; then
    echo "请使用 sudo 或以 root 用户运行此脚本!"
    exit 1
fi

# 配置参数
JDK_VERSION="8"
ORACLE_JDK_URL="https://download.oracle.com/otn/java/jdk/8u381-b09/jdk-8u381-linux-x64.tar.gz"  # 替换为最新版链接
INSTALL_DIR="/usr/lib/jvm"
PROFILE_FILE="/etc/profile.d/jdk.sh"

# 检测系统类型
if [ -f /etc/os-release ]; then
    . /etc/os-release
    OS=$ID
else
    echo "无法检测系统类型!"
    exit 1
fi

# 卸载旧版本 JDK(可选)
function remove_old_jdk() {
    echo "正在检查并卸载旧版 JDK..."
    case $OS in
        ubuntu|debian)
            apt-get remove -y openjdk-* >/dev/null 2>&1
            ;;
        centos|rhel|almalinux|rocky|alinux)
            yum remove -y java-* >/dev/null 2>&1
            ;;
        *)
            echo "未知系统类型,跳过卸载旧版 JDK。"
            ;;
    esac
}

# 安装 OpenJDK 8
function install_openjdk() {
    echo "正在安装 OpenJDK ${JDK_VERSION}..."
    case $OS in
        ubuntu|debian)
            apt-get update
            apt-get install -y openjdk-8-jdk
            ;;
        centos|rhel|almalinux|rocky|alinux)
            yum install -y java-1.8.0-openjdk-devel
            ;;
        *)
            echo "不支持的系统类型!"
            exit 1
            ;;
    esac
}

# 安装 Oracle JDK 8
function install_oracle_jdk() {
    echo "正在安装 Oracle JDK ${JDK_VERSION}..."
    
    # 安装依赖
    case $OS in
        ubuntu|debian)
            apt-get update
            apt-get install -y wget tar
            ;;
        centos|rhel|almalinux|rocky|alinux)
            yum install -y wget tar
            ;;
    esac

    # 下载并解压
    mkdir -p $INSTALL_DIR
    wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" \
         -O /tmp/jdk-${JDK_VERSION}.tar.gz $ORACLE_JDK_URL
    if [ $? -ne 0 ]; then
        echo "下载 Oracle JDK 失败!请检查网络或手动下载。"
        exit 1
    fi
    tar -zxvf /tmp/jdk-${JDK_VERSION}.tar.gz -C $INSTALL_DIR
    rm -f /tmp/jdk-${JDK_VERSION}.tar.gz

    # 查找解压后的目录
    JDK_DIR=$(find $INSTALL_DIR -maxdepth 1 -type d -name "jdk1.8*" | head -n 1)
    if [ -z "$JDK_DIR" ]; then
        echo "找不到 JDK 目录!安装失败。"
        exit 1
    fi

    # 设置环境变量
    echo "export JAVA_HOME=$JDK_DIR" > $PROFILE_FILE
    echo "export JRE_HOME=\$JAVA_HOME/jre" >> $PROFILE_FILE
    echo "export CLASSPATH=.:\$JAVA_HOME/lib:\$JRE_HOME/lib" >> $PROFILE_FILE
    echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> $PROFILE_FILE
    source $PROFILE_FILE

    # 设置默认 JDK
    update-alternatives --install "/usr/bin/java" "java" "$JDK_DIR/bin/java" 1000
    update-alternatives --install "/usr/bin/javac" "javac" "$JDK_DIR/bin/javac" 1000
    update-alternatives --set java "$JDK_DIR/bin/java"
    update-alternatives --set javac "$JDK_DIR/bin/javac"
}

# 主菜单
function main() {
    echo "===================================="
    echo "  JDK 8 安装脚本(适配阿里云服务器)"
    echo "===================================="
    echo "1. 安装 OpenJDK 8(推荐)"
    echo "2. 安装 Oracle JDK 8"
    echo "3. 退出"
    read -p "请选择安装类型 [1-3]: " choice

    case $choice in
        1)
            remove_old_jdk
            install_openjdk
            ;;
        2)
            remove_old_jdk
            install_oracle_jdk
            ;;
        3)
            echo "已取消安装。"
            exit 0
            ;;
        *)
            echo "无效输入!"
            exit 1
            ;;
    esac

    # 验证安装
    echo "安装完成!验证 Java 版本:"
    java -version
    echo "JAVA_HOME: $JAVA_HOME"
}

# 执行主函数
main

网站公告

今日签到

点亮在社区的每一天
去签到