前言 在开发或部署Java项目时,不同项目可能需要依赖不同版本的JDK(Java Development Kit)。例如,一个旧项目可能需要JDK 8,而一个新项目可能已经升级到JDK 17。如果你是在Linux环境下工作,如何高效管理和切换多版本JDK就是一个非常实际的问题。本网将介绍如何在Linux上轻松管理多版本JDK。
需求 博主想安装一个Jenkins,但是现在Jenkins需要高版本的JDK。 但Linux上只有JDK 8,所以有使用高版本JDK的需求,所以就要下载高版本的JDK 17。
手动安装 解压
切换版本 原项目使用JDK 8,所以在不影响原项目运行的情况下,可以临时切换到高版本JDK。 但每次切换版本都需要修改环境变量,所以博主图省事,就写了一个 shell命令文件
,放在 /usr/local/jenkins/
路径下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 # !/bin/bash # 设置启动路径 START_PATH=$(pwd) # 当前工作路径 # 设置日志文件路径 LOG_FILE="$START_PATH/jenkins.log" # 临时设置 JDK 17 路径 export JAVA_HOME=/usr/java/jdk-17.0.13 export PATH=$JAVA_HOME/bin:$PATH # 启动 Jenkins,并将日志输出重定向到 jenkins.log 文件 echo "正在启动 Jenkins JDK 17..." | tee -a "$LOG_FILE" java -jar /usr/local/jenkins/jenkins-2.463.war --httpPort=9090 >> "$LOG_FILE" 2>&1 & # 获取 Jenkins 进程的 PID JENKINS_PID=$! # 显示进度条的函数 show_progress() { local duration=$1 local interval=1 local progress=0 echo -n "等待Jenkins启动" while [ $progress -lt $duration ]; do sleep $interval progress=$((progress + interval)) echo -n "#" done echo " 完成!" } # 设置等待时间(假设 Jenkins 启动时间为 30 秒,调整为实际启动时间) WAIT_TIME=30 # 显示等待进度条 show_progress $WAIT_TIME # 启动完成后,切换回 JDK 8 echo "正在切换 JDK 8..." | tee -a "$LOG_FILE" export JAVA_HOME=/usr/java/jdk1.8.0_401 export PATH=$JAVA_HOME/bin:$PATH # 打印当前使用的 Java 版本,并记录到日志文件 echo "当前JDK版本: $(java -version)" | tee -a "$LOG_FILE" # 等待 Jenkins 进程结束 wait $JENKINS_PID
启用脚本 1 2 3 cd /usr/local/jenkins/ ./start_jenkins.sh