各系統(tǒng)下多版本JDK安裝與配置步驟
一、概述
當(dāng)不同項(xiàng)目可能需要不同Java版本,這時(shí)我們需要在同一臺(tái)機(jī)器上安裝多個(gè)版本的JDK,并能夠方便地切換。主要通過以下步驟實(shí)現(xiàn):
- 下載JDK:從Oracle官網(wǎng)或OpenJDK網(wǎng)站下載所需的JDK版本。
- 安裝JDK:可以將不同版本的JDK安裝到不同的目錄。例如,將JDK 8安裝在/usr/lib/jvm/jdk-8,將JDK 11安裝在/usr/lib/jvm/jdk-11。
- 配置環(huán)境變量:為不同版本的jdk創(chuàng)建對應(yīng)的JAVA_HOME,再創(chuàng)建一個(gè)通用的JAVA_HOME。
- 切換JDK版本:將需要應(yīng)用的jdk版本的JAVA_HOME賦值給這個(gè)通用的JAVA_HOME。
- 驗(yàn)證版本:使用
java -version命令驗(yàn)證當(dāng)前使用的JDK版本。
二、Windows 環(huán)境多個(gè)JDK安裝與切換
2.1 下載jdk
去Oracle官網(wǎng)上下載想要安裝的jdk版本,https://www.oracle.com/java/technologies/downloads/。

2.2 安裝jdk
雙擊.exe文件,選擇好安裝目錄進(jìn)行安裝。多個(gè)版本的jdk重復(fù)這兩步操作就好。

2.3 配置環(huán)境變量
首先找到j(luò)dk安裝的目錄。

在環(huán)境變量中新增不同jdk版本的JAVA_HOME。

創(chuàng)建一個(gè)通用的JAVA_HOME,將需要使用的jdk版本的JAVA_HOME賦值給這個(gè)通用的JAVA_HOME。

配置Path環(huán)境變量,編輯Path變量,在后面添加兩條變量。如果之前配置過其他的jdk的path變量的話,就先把之前的配置刪除,重新添加下面兩條。并且這兩條需要移動(dòng)到最前面,不然后續(xù)無法切換jdk版本。
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
配置CLASSPATH環(huán)境變量,編輯CLASSPATH變量,在后面添加下面的配置,如果之前有配置過,也先刪除再重新配置。
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
2.4 切換JDK版本
編輯通用的JAVA_HOME變量的值,將需要應(yīng)用的jdk的JAVA_HOME值賦值給通用的JAVA_HOME變量。

2.5 驗(yàn)證版本
使用以下命令進(jìn)行驗(yàn)證當(dāng)前jdk版本信息:
# 檢查當(dāng)前Java版本 java -version # 檢查Javac版本 javac -version

三、Mac 環(huán)境多JDK安裝與切換
3.1 下載jdk
去Oracle官網(wǎng)上下載想要安裝的jdk版本,M芯片選擇arm架構(gòu)的.bmg格式的文件。https://www.oracle.com/java/technologies/downloads/。

3.2 安裝jdk
雙擊下載的文件,安裝步驟一步步點(diǎn)繼續(xù)就好。


3.3 配置環(huán)境變量
安裝完成后會(huì)在/Library/Java/JavaVirtualMachines目錄下看到安裝的jdk信息。

打開終端,進(jìn)入到/root目錄下,通過
open .bash_profile命令打開并編輯.bash_profile文件,如果不存在這個(gè)文件就創(chuàng)建一個(gè)這個(gè)名字的文件。export JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home export JAVA_21_HOME=/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH:. alias jdk8='export JAVA_HOME=$JAVA_8_HOME' alias jdk21='export JAVA_HOME=$JAVA_21_HOME'

編輯完成之后,執(zhí)行
source .bash_profile讓配置文件生效。再使用java -version命令查看jdk版本信息。
3.4 切換JDK版本
可以根據(jù)上面配置的版本別名進(jìn)行切換。


3.5 驗(yàn)證版本
使用以下命令進(jìn)行驗(yàn)證當(dāng)前jdk版本信息:
# 檢查當(dāng)前Java版本 java -version # 檢查Javac版本 javac -version
四、Linux 環(huán)境多JDK安裝與切換
4.1 下載jdk
創(chuàng)建統(tǒng)一的安裝目錄
# 創(chuàng)建 JDK 安裝目錄 sudo mkdir -p /usr/local/src/jdks sudo chmod 755 /usr/local/src/jdks
下載 JDK
# 方式1:從官網(wǎng)下載(需要賬戶) # 訪問 https://www.oracle.com/java/technologies/downloads/ # 或 https://adoptium.net/ # 方式2:使用 wget 下載 OpenJDK(示例) cd /tmp # OpenJDK 8 wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz # OpenJDK 11 wget https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz # OpenJDK 17 wget https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz # OpenJDK 21 wget https://download.java.net/java/GA/jdk21.0.2/f2283984656d49d69e91c558476027ac/13/GPL/openjdk-21.0.2_linux-x64_bin.tar.gz
4.2 安裝jdk
# 解壓到 /usr/local/src/jdks 目錄 sudo tar -xzf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz -C /usr/local/src/jdks/ sudo tar -xzf openjdk-11.0.2_linux-x64_bin.tar.gz -C /usr/local/src/jdks/ sudo tar -xzf openjdk-17.0.2_linux-x64_bin.tar.gz -C /usr/local/src/jdks/ sudo tar -xzf openjdk-21.0.2_linux-x64_bin.tar.gz -C /usr/local/src/jdks/ # 重命名為簡潔的名稱(可選) cd /usr/local/src/jdks sudo mv java-se-8u41-ri jdk-8 sudo mv jdk-11.* jdk-11 sudo mv jdk-17.* jdk-17 sudo mv jdk-21.* jdk-21 # 設(shè)置權(quán)限 sudo chmod -R 755 /usr/local/src/jdks/jdk-* sudo chown -R root:root /usr/local/src/jdks/jdk-*
4.3 驗(yàn)證安裝
# 檢查每個(gè) JDK 版本 /usr/local/src/jdks/jdk-8/bin/java -version /usr/local/src/jdks/jdk-11/bin/java -version /usr/local/src/jdks/jdk-17/bin/java -version /usr/local/src/jdks/jdk-21/bin/java -version

4.4 配置 JDK 切換
4.4.1 使用環(huán)境變量(按需切換)
創(chuàng)建切換腳本
# 1.創(chuàng)建切換腳本目錄
mkdir -p ~/bin/jdk_switcher
# 2.創(chuàng)建腳本
cat > ~/bin/jdk_switcher/jdk-switch.sh << 'EOF'
#!/bin/bash
# JDK 切換腳本
JDK_BASE_DIR="/usr/local/src/jdks"
CURRENT_JDK_FILE="$HOME/.current_jdk"
show_usage() {
echo "使用方法: $0 [版本號(hào)]"
echo "可用版本:"
ls -1 "$JDK_BASE_DIR" | grep -E "^jdk-|^java-" | sed 's/^/ /'
echo ""
echo "示例:"
echo " $0 8 # 切換到 JDK 8"
echo " $0 11 # 切換到 JDK 11"
echo " $0 17 # 切換到 JDK 17"
echo " $0 current # 顯示當(dāng)前版本"
}
get_jdk_path() {
local version=$1
local jdk_path
# 嘗試匹配 jdk-版本號(hào)
jdk_path=$(ls -d "$JDK_BASE_DIR"/jdk-$version* 2>/dev/null | head -1)
# 如果沒找到,嘗試匹配 java-版本號(hào)
if [ -z "$jdk_path" ]; then
jdk_path=$(ls -d "$JDK_BASE_DIR"/java-$version* 2>/dev/null | head -1)
fi
echo "$jdk_path"
}
set_jdk() {
local version=$1
local jdk_path=$(get_jdk_path "$version")
if [ -z "$jdk_path" ]; then
echo "錯(cuò)誤: 未找到 JDK $version"
return 1
fi
if [ ! -d "$jdk_path" ]; then
echo "錯(cuò)誤: JDK 路徑不存在: $jdk_path"
return 1
fi
# 設(shè)置環(huán)境變量
export JAVA_HOME="$jdk_path"
export PATH="$JAVA_HOME/bin:$PATH"
# 保存當(dāng)前選擇
echo "$jdk_path" > "$CURRENT_JDK_FILE"
echo "已切換到: $jdk_path"
java -version
}
show_current() {
if [ -f "$CURRENT_JDK_FILE" ]; then
current_jdk=$(cat "$CURRENT_JDK_FILE")
echo "當(dāng)前 JDK: $current_jdk"
$current_jdk/bin/java -version
else
echo "未設(shè)置 JDK"
java -version 2>/dev/null || echo "Java 未安裝或未在 PATH 中"
fi
}
# 主邏輯
main() {
if [ $# -eq 0 ]; then
show_usage
return 1
fi
case "$1" in
"current")
show_current
;;
"list")
echo "已安裝的 JDK 版本:"
ls -1 "$JDK_BASE_DIR" | grep -E "^jdk-|^java-" | sed 's/^/ /'
;;
"help"|"-h"|"--help")
show_usage
;;
*)
set_jdk "$1"
;;
esac
}
main "$@"
EOF
# 3.設(shè)置執(zhí)行權(quán)限
chmod +x ~/bin/jdk_switcher/jdk-switch.sh
# 4.創(chuàng)建符號(hào)鏈接
ln -sf ~/bin/jdk_switcher/jdk-switch.sh ~/bin/jdk-switch
# 5.添加到 .bashrc 或 .zshrc
echo 'alias java-switch="~/bin/jdk-switch"' >> ~/.bashrc
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
4.4.2 使用切換腳本
# 列出所有 JDK jdk-switch list # 切換到 JDK 8 jdk-switch 8 # 切換到 JDK 11 jdk-switch 11 # 查看當(dāng)前版本 jdk-switch current # 顯示幫助 jdk-switch help
總結(jié)
到此這篇關(guān)于各系統(tǒng)下多版本JDK安裝與配置步驟的文章就介紹到這了,更多相關(guān)多版本JDK安裝與配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java后端調(diào)用第三方接口返回圖片流給前端的具體代碼實(shí)現(xiàn)
在前后端分離的開發(fā)中,經(jīng)常會(huì)遇到需要從后端返回圖片流給前端的情況,下面這篇文章主要給大家介紹了關(guān)于java后端調(diào)用第三方接口返回圖片流給前端的具體代碼實(shí)現(xiàn),需要的朋友可以參考下2024-02-02
SpringMVC結(jié)合ajaxfileupload實(shí)現(xiàn)文件無刷新上傳代碼
本篇文章主要介紹了SpringMVC結(jié)合ajaxfileupload實(shí)現(xiàn)文件無刷新上傳,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-04-04
Eolink上傳文件到Java后臺(tái)進(jìn)行處理的示例代碼
這篇文章主要介紹了Eolink上傳文件到Java后臺(tái)進(jìn)行處理,這里是上傳的excel表格數(shù)據(jù)并轉(zhuǎn)換為java集合對象、然后進(jìn)行業(yè)務(wù)邏輯處理判斷最后保存到數(shù)據(jù)庫?,需要的朋友可以參考下2022-12-12
Springboot基于Redisson實(shí)現(xiàn)Redis分布式可重入鎖源碼解析
這篇文章主要介紹了Springboot基于Redisson實(shí)現(xiàn)Redis分布式可重入鎖,本文通過案例源碼分析給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
Spring Boot中使用Spring-data-jpa的配置方法詳解
今天小編就為大家分享一篇關(guān)于Spring Boot中使用Spring-data-jpa的配置方法詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03
Spring-Security對HTTP相應(yīng)頭的安全支持方式
這篇文章主要介紹了Spring-Security對HTTP相應(yīng)頭的安全支持方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10

