JDK1.8與JDK17多版本共存相互切換(windows、macOS、Linux、IDE)
在電腦已經(jīng)安裝之前主流的jdk1.8后避免不了要安裝新的主流jdk17,本章主要目的是介紹簡(jiǎn)單的方式切換,并且指出一些容易發(fā)生的一些小錯(cuò)誤。
Windows 系統(tǒng)切換方法
手動(dòng)配置環(huán)境變量(傳統(tǒng)方法)
1.下載完jdk17后,可以將其與jdk8放在同一文件下。

2.右擊我的電腦進(jìn)入環(huán)境配置,一般我們配置好的jdk1.8為以下

3. 同樣的原理,點(diǎn)擊新建,起個(gè)變量名JDK17,找到下載jdk17的路徑復(fù)制到變量值,點(diǎn)擊確定。

4. 我們之前配置jdk8可能是下面這個(gè)變量值,有些人的是jdk8的路徑,建議用下面這個(gè)方法,因?yàn)檫@是傻瓜的精髓。

5. win+r輸入cmd輸入java -version(中間空格)會(huì)出現(xiàn)下面證明此時(shí)正是jdk8版本

6.回到環(huán)境變量只需將%JDK8%改為%JDK17%即可(8改17傻瓜不),點(diǎn)擊確認(rèn),然后重新打開(kāi)win+r(必須重新打開(kāi))按照5進(jìn)行會(huì)出現(xiàn)以下,證明已經(jīng)切換成功。

注:有些人切換的時(shí)候并未切換到JDK17,我也遇到了這個(gè)問(wèn)題,那是因?yàn)樵赑ath中下載jdk17的時(shí)候自動(dòng)給我們加了兩行,只要?jiǎng)h除這兩行(這里我已經(jīng)刪除了,刪除的與第一行相似,但是未刪除前位于前兩行),再重新打開(kāi)win+r,按照5進(jìn)行就會(huì)出現(xiàn)。

使用 JEnv for Windows
安裝步驟:
# 1. 安裝 Chocolatey(Windows 包管理器)
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
# 2. 使用 Chocolatey 安裝 JEnv
choco install jenv
# 3. 或者使用 Scoop 安裝
scoop bucket add versions
scoop install jenv-win配置和使用:
# 添加 JDK 到 JEnv jenv add "C:\Java\jdk1.8.0_381" 1.8 jenv add "C:\Java\jdk-17.0.10" 17 # 查看已安裝的 JDK jenv versions # 全局切換 jenv global 1.8 # 切換到 JDK 8 jenv global 17 # 切換到 JDK 17 # 本地目錄切換(僅當(dāng)前目錄有效) cd my-java8-project jenv local 1.8 cd my-java17-project jenv local 17 # 僅當(dāng)前shell會(huì)話切換 jenv shell 17
macOS 系統(tǒng)切換方法
使用 Homebrew + jenv
步驟一:安裝工具
# 1. 安裝 Homebrew(如果未安裝) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # 2. 安裝 jenv brew install jenv # 3. 配置 shell(根據(jù)你的 shell) # bash 用戶 echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(jenv init -)"' >> ~/.bash_profile # zsh 用戶 echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc echo 'eval "$(jenv init -)"' >> ~/.zshrc # 重新加載配置 source ~/.zshrc # 或 source ~/.bash_profile
步驟二:安裝多版本 JDK
# 方法1:使用 Homebrew 安裝多個(gè) JDK brew tap homebrew/cask-versions brew install --cask temurin8 # JDK 8 brew install --cask temurin17 # JDK 17 # 方法2:如果已手動(dòng)安裝,添加到 jenv # 通常安裝位置: # JDK 8: /Library/Java/JavaVirtualMachines/jdk1.8.0_381.jdk/Contents/Home # JDK 17: /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_381.jdk/Contents/Home jenv add /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
步驟三:使用 jenv 管理
# 查看所有可用的 JDK jenv versions # 設(shè)置全局默認(rèn)版本 jenv global 1.8.0.381 # 或 jenv global 17.0 # 設(shè)置項(xiàng)目特定版本 cd ~/projects/java8-project jenv local 1.8.0.381 cd ~/projects/java17-project jenv local 17.0 # 查看當(dāng)前使用的版本 jenv version # 在當(dāng)前 shell 會(huì)話中臨時(shí)切換 jenv shell 17.0
Linux 系統(tǒng)切換方法
使用 update-alternatives(Ubuntu/Debian)
# 1. 安裝兩個(gè) JDK(如果未安裝) sudo apt update sudo apt install openjdk-8-jdk openjdk-17-jdk # 2. 注冊(cè)到 alternatives 系統(tǒng) sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/java-8-openjdk-amd64/bin/java" 1 sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/java-17-openjdk-amd64/bin/java" 2 sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-8-openjdk-amd64/bin/javac" 1 sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-17-openjdk-amd64/bin/javac" 2 # 3. 切換版本 sudo update-alternatives --config java # 會(huì)顯示: # 有 2 個(gè)候選項(xiàng)可用于替換 java (提供 /usr/bin/java)。 # # 選擇 路徑 優(yōu)先級(jí) 狀態(tài) # ------------------------------------------------------------ # * 0 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 2 自動(dòng)模式 # 1 /usr/lib/jvm/java-8-openjdk-amd64/bin/java 1 手動(dòng)模式 # 2 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 2 手動(dòng)模式 # # 要維持當(dāng)前值[*]請(qǐng)按<回車(chē)鍵>,或者鍵入選擇的編號(hào): # 同樣切換 javac sudo update-alternatives --config javac # 4. 驗(yàn)證 java -version javac -version
IDE 中的版本切換
IntelliJ IDEA 配置
項(xiàng)目級(jí)配置:
File → Project Structure (Ctrl+Alt+Shift+S)
→ Project Settings → Project
→ Project SDK: 添加多個(gè) JDK
→ Project language level: 選擇對(duì)應(yīng)版本
→ Project Settings → Modules
→ 每個(gè)模塊可以單獨(dú)設(shè)置 SDK運(yùn)行配置:
Run → Edit Configurations → 選擇要修改的運(yùn)行配置 → 右側(cè)找到 "JRE" → 選擇對(duì)應(yīng)的 JDK 版本 或者: Alt+Shift+F10 → Edit Configurations
全局配置:
File → Settings (Ctrl+Alt+S)
→ Build, Execution, Deployment
→ Build Tools → Gradle/Maven
→ Gradle JVM: 選擇 JDK 版本Eclipse 配置
1. 添加多個(gè) JDK
Window → Preferences
→ Java → Installed JREs
→ Add... → Standard VM
→ 選擇 JDK 安裝目錄
2. 項(xiàng)目級(jí)配置
右鍵項(xiàng)目 → Properties
→ Java Build Path → Libraries
→ JRE System Library → Edit...
→ 選擇 Alternate JRE
3. 運(yùn)行配置
Run → Run Configurations
→ Java Application
→ 選擇要配置的類(lèi)
→ JRE 標(biāo)簽頁(yè)
→ 選擇 Runtime JREVSCode 配置
settings.json 配置:
{
"java.configuration.runtimes": [
{
"name": "JavaSE-1.8",
"path": "C:\\Java\\jdk1.8.0_381",
"default": false
},
{
"name": "JavaSE-17",
"path": "C:\\Java\\jdk-17.0.10",
"default": true
}
],
// 工作區(qū)特定設(shè)置
"java.jdt.ls.java.home": "C:\\Java\\jdk-17.0.10",
// Maven 配置
"java.configuration.maven.userSettings": "C:\\path\\to\\settings.xml",
"maven.terminal.customEnv": [
{
"environmentVariable": "JAVA_HOME",
"value": "C:\\Java\\jdk-17.0.10"
}
]
}工作區(qū) .vscode/settings.json:
{
// 這個(gè)項(xiàng)目使用 Java 8
"java.configuration.runtimes": [
{
"name": "JavaSE-1.8",
"path": "/usr/lib/jvm/jdk1.8.0_381",
"default": true
}
],
"java.home": "/usr/lib/jvm/jdk1.8.0_381"
}常見(jiàn)問(wèn)題解決
問(wèn)題1:切換后版本沒(méi)變
# 原因:PATH 中有其他 java echo $PATH | tr ':' '\n' which -a java # 查看所有 java 命令位置 # 解決:確保正確的路徑在前面 export PATH="$JAVA_HOME/bin:$PATH"
問(wèn)題2:IDE 不使用系統(tǒng)設(shè)置的 JAVA_HOME
解決: 1. IDE 內(nèi)重新配置 SDK 2. 重啟 IDE 3. 清理 IDE 緩存 4. 檢查 IDE 的配置文件
總結(jié)建議
個(gè)人開(kāi)發(fā)推薦:使用 SDKMAN!(Linux/macOS)或 jenv(Windows)
團(tuán)隊(duì)開(kāi)發(fā)推薦:統(tǒng)一使用 Docker 容器化,確保環(huán)境一致
通過(guò)以上方法,你可以輕松地在不同項(xiàng)目和場(chǎng)景間切換 JDK 1.8 和 JDK 17,提高開(kāi)發(fā)效率并避免版本沖突。
到此這篇關(guān)于JDK1.8與JDK17多版本共存相互切換(windows、macOS、Linux、IDE)的文章就介紹到這了,更多相關(guān)JDK1.8與JDK17自由切換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用Java連接sqlserver數(shù)據(jù)庫(kù)時(shí)候幾個(gè)jar包的區(qū)別分析
這篇文章主要介紹了用Java連接sqlserver數(shù)據(jù)庫(kù)時(shí)候幾個(gè)jar包的區(qū)別分析,需要的朋友可以參考下2014-10-10
java實(shí)現(xiàn)簡(jiǎn)單銀行家算法
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單銀行家算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
Spring Boot中Bean定義方調(diào)用方式解析
這篇文章主要介紹了Spring Boot中Bean定義方調(diào)用方式解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
Java使用poi獲取不到docx表格中書(shū)簽的問(wèn)題及解決
這篇文章主要介紹了Java使用poi獲取不到docx表格中書(shū)簽的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Java super關(guān)鍵字調(diào)用父類(lèi)過(guò)程解析
這篇文章主要介紹了Java super關(guān)鍵字調(diào)用父類(lèi)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Mybatis之通用Mapper動(dòng)態(tài)表名及其原理分析
這篇文章主要介紹了Mybatis之通用Mapper動(dòng)態(tài)表名及其原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08

