CentOS安裝配置多版本JDK詳細步驟記錄
1. 下載 JDK
你可以從 Oracle 官方網(wǎng)站或者 OpenJDK 的相關(guān)源下載不同版本的 JDK 安裝包。以 JDK 8 和 JDK 21 為例,假設(shè)你已經(jīng)將它們下載到了本地。
2. 安裝 JDK
創(chuàng)建一個用于存放 JDK 的目錄,然后將下載的 JDK 安裝包解壓到該目錄。
# 創(chuàng)建目錄 sudo mkdir -p /usr/local/java # 解壓JDK 8 sudo tar -zxvf jdk-8u202-linux-x64.tar.gz -C /usr/local/java # 解壓JDK 21 sudo tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/local/java
3. 配置環(huán)境變量
下面介紹兩種常用的方式,在 CentOS 10 系統(tǒng)上安裝并管理多個 JDK 版本,一種是使用 update‐alternatives 工具進行全局切換,另一種則是通過設(shè)置環(huán)境變量和 alias 來臨時切換。下面提供詳細步驟:
方法一:使用 update-alternatives 全局管理
這種方式可以在系統(tǒng)級別統(tǒng)一設(shè)置默認使用哪個 JDK。每個 JDK 都注冊一個優(yōu)先級,然后通過命令來切換默認版本。
- 注冊各個JDK
sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.8.0_xxx/bin/java 1 sudo update-alternatives --install /usr/bin/java java /usr/java/jdk-11.0_xxx/bin/java 2 sudo update-alternatives --install /usr/bin/java java /usr/java/jdk-17.0_xxx/bin/java 3 sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.8.0_xxx/bin/javac 1 sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk-11.0_xxx/bin/javac 2 sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk-17.0_xxx/bin/javac 3
其中“xxx”部分請?zhí)鎿Q為具體的版本號路徑。
切換默認JDK
sudo update-alternatives --config java sudo update-alternatives --config javac
系統(tǒng)會列出已注冊的各個版本,輸入對應編號即可切換。
驗證版本
執(zhí)行以下命令確認當前默認版本:
java -version javac -version
方法二:通過環(huán)境變量和 alias 切換(用戶級別)
這種方式適用于需要臨時切換 JDK 版本或者僅對當前用戶生效的情況。
編輯環(huán)境變量配置文件修改
/etc/profile
(全局)或~/.bash_profile
(當前用戶)文件,追加如下內(nèi)容(示例中配置了三個 alias 命令):編輯完成后,記得保存退出(例如,在 vim 中按
Esc
后輸入:wq
保存并退出;在 nano 中按Ctrl+O
保存,然后Ctrl+X
退出)。sudo vi /etc/profile sudo nano /etc/profile vim ~/.bash_profile nano ~/.bash_profile
## 默認指向 JDK 8 export JAVA_HOME=/usr/local/java/jdk1.8.0_202 export PATH=$JAVA_HOME/bin:$PATH alias java8='export JAVA_HOME=/usr/local/java/jdk1.8.0_202 && export PATH=$JAVA_HOME/bin:$PATH && java -version' alias java21='export JAVA_HOME=/usr/local/java/jdk-21.0.6 && export PATH=$JAVA_HOME/bin:$PATH && java -version' ## alias java17='export JAVA_HOME=/usr/local/java/jdk-17.0_xxx && export PATH=$JAVA_HOME/bin:$PATH && java -version'
保存文件后,讓配置生效:
source /etc/profile # 或者 source ~/.bash_profile
切換 JDK 版本
當你需要切換到某個版本時,只需執(zhí)行相應 alias 命令,例如:
java21
驗證切換效果運行:
java -version
以確認當前正在使用所設(shè)置的 JDK。
持久化配置:當前的配置只在當前終端會話中生效。若希望每次開啟終端都能使用這些配置,需要把它們添加到 shell 的配置文件中,像
~/.bashrc
(針對 Bash shell)或者~/.zshrc
(針對 Zsh shell)。添加配置的命令示例如下:echo 'export JAVA_HOME=/usr/local/java/jdk1.8.0_202' >> ~/.bashrc echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc echo 'alias java8='export JAVA_HOME=/usr/local/java/jdk1.8.0_202 && export PATH=$JAVA_HOME/bin:$PATH && java -version'' >> ~/.bashrc echo 'alias java21='export JAVA_HOME=/usr/local/java/jdk-21.0.6 && export PATH=$JAVA_HOME/bin:$PATH && java -version'' >> ~/.bashrc
添加完成后,執(zhí)行以下命令讓配置生效:
source ~/.bashrc
- 錯誤處理缺失:當前配置沒有對目錄不存在或者 JDK 版本不可用的情況進行錯誤處理。你可以在
alias
命令里添加一些錯誤檢查邏輯,示例如下:
alias java8='if [ -d "/usr/local/java/jdk1.8.0_202" ]; then export JAVA_HOME=/usr/local/java/jdk1.8.0_202 && export PATH=$JAVA_HOME/bin:$PATH && java -version; else echo "JDK 8 目錄不存在"; fi' alias java21='if [ -d "/usr/local/java/jdk-21.0.6" ]; then export JAVA_HOME=/usr
- 錯誤處理缺失:當前配置沒有對目錄不存在或者 JDK 版本不可用的情況進行錯誤處理。你可以在
update-alternatives 方法適合系統(tǒng)級別的 JDK 管理,適用于需要在不同項目間統(tǒng)一切換默認 JDK 的場景。
環(huán)境變量和 alias 方法適合用戶臨時切換,或者針對不同需求(如開發(fā)與測試)靈活設(shè)置。
總結(jié)
到此這篇關(guān)于CentOS安裝配置多版本JDK的文章就介紹到這了,更多相關(guān)CentOS安裝配置多版本JDK內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot 中PageHelper 插件使用配置思路詳解
這篇文章主要介紹了Spring Boot 中PageHelper 插件使用配置及實現(xiàn)思路,通過引入myabtis和pagehelper依賴,在yml中配置mybatis掃描和實體類,具體實現(xiàn)方法跟隨小編一起看看吧2021-08-08Java StringBuffer類與StringBuilder類用法實例小結(jié)
這篇文章主要介紹了Java StringBuffer類與StringBuilder類用法,結(jié)合實例形式總結(jié)分析了Java StringBuffer類與StringBuilder類的功能、原理及添加、刪除、替換、截取等操作實現(xiàn)技巧,需要的朋友可以參考下2019-03-03Spring Boot中的 6 種API請求參數(shù)讀取方式示例詳解
使用Spring Boot開發(fā)API的時候,讀取請求參數(shù)是服務端編碼中最基本的一項操作,Spring Boot中也提供了多種機制來滿足不同的API設(shè)計要求,這篇文章主要介紹了Spring Boot中的 6 種API請求參數(shù)讀取方式示例詳解,需要的朋友可以參考下2024-05-05淺談Java異常的Exception e中的egetMessage()和toString()方法的區(qū)別
下面小編就為大家?guī)硪黄獪\談Java異常的Exception e中的egetMessage()和toString()方法的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07