将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