最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

通過Jenv管理多JDK版本的詳細(xì)介紹

 更新時間:2026年05月25日 10:13:43   作者:@SmartSi  
jenv是一個用于管理?Java?環(huán)境的工具,它允許用戶在不同的Java版本之間輕松切換,這篇文章主要介紹了通過Jenv管理多JDK版本的詳細(xì)介紹,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

Jenv 是一個輕量級的 Java 版本管理工具,可以幫助你在 macOS/Linux 上輕松安裝、切換和管理多個 JDK 版本。下面詳細(xì)介紹如何使用 jenv 管理多個 JDK 版本。

1. 安裝 jenv

推薦使用 Homebrew 安裝 jenv 工具來管理多個 JDK 版本:

brew install jenv

安裝完成后,根據(jù) shell 類型(bash/zsh)配置環(huán)境變量。在這,在 ~/.bash_profile 文件中添加如下信息:

# JENV
export JENV_HOME=.jenv
export PATH=$JENV_HOME/bin:$PATH
eval "$(jenv init -)"

重新加載配置文件使之生效:

source ~/.bash_profile

驗證安裝:

smarsi:~ smartsi$ jenv doctor
[OK]	No JAVA_HOME set
[OK]	Java binaries in path are jenv shims
[OK]	Jenv is correctly loaded

如果一切正常,會顯示’Jenv is correctly loaded’。

需要注意的是 ~/.bash_profile 環(huán)境變量中不要配置 JAVA_HOME,否則會出現(xiàn)如下異常:

smarsi:~ smartsi$ jenv doctor
[ERROR]	JAVA_HOME variable already set, scripts that use it directly could not use java version set by jenv
[ERROR]	Java binary in path is not in the jenv shims.
[ERROR]	Please check your path, or try using /path/to/java/home is not a valid path to java installation.
	PATH : ...
[ERROR]	Jenv is not loaded in your bash
[ERROR]	To fix : 	echo 'eval "$(jenv init -)"' >> /Users/smartsi/.bash_profile

2. 安裝多 JDK 版本

jenv 本身不安裝 JDK,你需要先通過其他方式安裝好 JDK。這里以 Homebrew 安裝 OpenJDK 為例。首先使用 brew search openjdk 命令搜索可用的 JDK 版本:

2.1 如何選擇 JDK

從上面可以看到有兩種 JDK,一種是使用 formula 安裝 OpenJDK,另一種是使用 cask 安裝 Oracle JDK 或其他供應(yīng)商的 JDK。區(qū)別在于安裝方式、位置和管理方式:

特性FormulaeCasks
適用對象命令行工具、庫、開發(fā)包(如 OpenJDK、Maven、Git)原生 GUI 應(yīng)用程序(如 IntelliJ IDEA、Oracle JDK 安裝包)
安裝位置通常鏈接到 /usr/local(或 /opt/homebrew,Apple Silicon)下的 bin、lib 等目錄安裝在 /Applications 或用戶指定的 Applications 目錄
安裝內(nèi)容下載預(yù)編譯二進(jìn)制或源碼編譯,然后通過符號鏈接集成到系統(tǒng)環(huán)境下載 .app 或安裝器,拖拽或運行安裝程序
JDK 實例brew install openjdk(安裝 OpenJDK 的 Homebrew 移植版)brew install --cask oracle-jdkbrew install --cask adoptopenjdk(安裝官方或其他供應(yīng)商的 JDK 安裝包)
環(huán)境配置安裝后通常會自動處理路徑(如將 openjdk 加入 PATH),或需要手動鏈接安裝后需要手動設(shè)置 JAVA_HOME 或通過 /usr/libexec/java_home 工具管理

當(dāng)你需要運行 Java 程序時,是選擇 Formulae 還是 Casks?當(dāng) 純命令行開發(fā)/運行 場景時推薦 Formulae(如 brew install openjdk@17)。推薦原因是:安裝快捷,自動加入 PATH,便于終端操作,版本切換靈活(配合 jenv)。

2.2 安裝 JDK

在這選擇使用 formula 方式安裝 OpenJDK,以 openjdk@17 為例:

brew install openjdk@17

注意 Mac apple 芯片安裝 openjdk@8 會報錯: The x86_64 architecture is required for this software. 因此安裝 jdk8 可以直接從 Oracle 官網(wǎng)上下載免費版本進(jìn)行安裝。

Homebrew 會將 JDK 安裝在 /usr/local/opt/openjdk@<version>(Intel) 或 /opt/homebrew/opt/openjdk@<version>(Apple Silicon) 下。在這 JDK 安裝路徑為 /opt/homebrew/opt/openjdk@17

/opt/homebrew 為 homebrew 安裝路徑。

通過安裝包安裝的 JDK 安裝路徑一般為 /Library/Java/JavaVirtualMachines/

2.3 將 JDK 添加到 jenv

可以使用 jenv add 命令將 JDK 的主目錄路徑添加進(jìn)去。Homebrew 安裝的 OpenJDK 路徑通常是 /usr/local/opt/openjdk@<version>/opt/homebrew/opt/openjdk@<version>。我們可以通過以下命令添加 OpenJDK 17OpenJDK 11

# 添加 OpenJDK 17
jenv add /opt/homebrew/opt/openjdk@17

# 添加 OpenJDK 11
jenv add /opt/homebrew/opt/openjdk@11
```bash
也可以將通過安裝包安裝的所有 JDK(如 Oracle JDK)添加到到 jenv:
```bash
jenv add /Library/Java/JavaVirtualMachines/*/Contents/Home

添加成功后,jenv 會給每個 JDK 分配一個簡單的名稱(如 11.0、17.0 等),你可以用 jenv versions 查看:

smarsi:JavaVirtualMachines smartsi$ jenv versions
* system (set by /Users/smartsi/.jenv/version)
  1.8
  1.8.0.461
  11
  11.0
  11.0.27
  17
  17.0
  17.0.15
  openjdk64-11.0.27
  openjdk64-17.0.15
  oracle64-1.8.0.461

3. 管理 JDK 版本

3.1 設(shè)置全局默認(rèn)版本

可以通過 jenv global xxx 命令來設(shè)置全局默認(rèn)版本:

smarsi:~ smartsi$ java -version
java version "1.8.0_461"
Java(TM) SE Runtime Environment (build 1.8.0_461-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode)
smarsi:~ smartsi$ jenv global 17.0
smarsi:~ smartsi$ java -version
openjdk version "17.0.15" 2025-04-15
OpenJDK Runtime Environment Homebrew (build 17.0.15+0)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.15+0, mixed mode, sharing)
smarsi:~ smartsi$ jenv global 1.8
smarsi:~ smartsi$ java -version
java version "1.8.0_461"
Java(TM) SE Runtime Environment (build 1.8.0_461-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode)

上述的 jenv global 17.0 命令會將系統(tǒng)默認(rèn) Java 版本設(shè)置為 17.0,后續(xù)所有新打開的終端都會使用此版本。

3.2 為當(dāng)前目錄設(shè)置局部版本

可以通過 jenv local xxx 命令為當(dāng)前目錄設(shè)置局部版本,進(jìn)入你的項目目錄(例如,/opt/workspace/datavines),運行:

smarsi:~ smartsi$ cd /opt/workspace/datavines
smarsi:datavines smartsi$ jenv local 17.0
smarsi:datavines smartsi$
smarsi:datavines smartsi$ java -version
openjdk version "17.0.15" 2025-04-15
OpenJDK Runtime Environment Homebrew (build 17.0.15+0)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.15+0, mixed mode, sharing)

上述的 jenv local 17.0 命令會將 /opt/workspace/datavines 目錄的 Java 版本設(shè)置為 17.0。這會在當(dāng)前目錄下生成一個 .java-version 文件,進(jìn)入該目錄時自動切換為 JDK 17,退出目錄后恢復(fù)為全局版本。

3.3 為當(dāng)前 shell 會話臨時設(shè)置版本

該設(shè)置只對當(dāng)前終端窗口有效,關(guān)閉后失效:

jenv shell 17.0

4. 卸載 JDK 或從 jenv 中移除

如果要從 jenv 中移除某個 JDK(不卸載 JDK 本身),可以運行 jenv remove xxx 命令:

smarsi:~ smartsi$ jenv remove 11.0
JDK 11.0 removed

如果要徹底卸載 JDK(如通過 Homebrew 安裝的),可以運行 brew uninstall xxx 命令:

smarsi:~ smartsi$ brew uninstall openjdk@11
Uninstalling /opt/homebrew/Cellar/openjdk@11/11.0.27... (667 files, 310.4MB)

5. 配置 jenv 插件(推薦)

為了確保 JAVA_HOME 環(huán)境變量也能自動切換,建議啟用 export 插件:

smarsi:~ smartsi$ jenv enable-plugin export
You may restart your session to activate jenv export plugin
export plugin activated

重啟 shell 使配置生效。全局 Java 版本為 1.8,我們單獨為 /opt/workspace/datavines 目錄設(shè)置為 17.0,查看演示效果:

smarsi:~ smartsi$ cd /opt/workspace/
smarsi:workspace smartsi$
smarsi:workspace smartsi$ echo $JAVA_HOME
/Users/smartsi/.jenv/versions/1.8
smarsi:workspace smartsi$
smarsi:workspace smartsi$ cd datavines
smarsi:datavines smartsi$
smarsi:datavines smartsi$ echo $JAVA_HOME
/Users/smartsi/.jenv/versions/17.0

6. 總結(jié)

通過 jenv,你可以輕松管理多個 JDK 版本,在不同項目間無縫切換,而無需手動修改環(huán)境變量。配合 Homebrew 安裝 JDK,整個過程非常流暢?,F(xiàn)在你可以愉快地在多個 Java 版本之間切換工作了!

到此這篇關(guān)于通過Jenv管理多JDK版本的文章就介紹到這了,更多相關(guān)Jenv管理多JDK版本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring基于注解管理bean實現(xiàn)方式講解

    Spring基于注解管理bean實現(xiàn)方式講解

    很多時候我們需要根據(jù)不同的條件在容器中加載不同的Bean,或者根據(jù)不同的條件來選擇是否在容器中加載某個Bean,這就是Bean的加載控制,一般我們可以通過編程式或注解式兩種不同的方式來完成Bean的管理
    2023-01-01
  • java多線程編程必備volatile與synchronized深入理解

    java多線程編程必備volatile與synchronized深入理解

    這篇文章主要介紹了java多線程編程必備volatile與synchronized的深入理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 詳細(xì)說一說Java序列化的幾種方式對比

    詳細(xì)說一說Java序列化的幾種方式對比

    在某種情況下需要考慮一些安全問題和數(shù)據(jù)對象的使用問題,這時候就可以用序列化的技術(shù)來進(jìn)行數(shù)據(jù)存儲,這篇文章主要介紹了Java序列化幾種方式對比的相關(guān)資料,需要的朋友可以參考下
    2025-07-07
  • BeanFactory和FactoryBean的區(qū)別示例詳解

    BeanFactory和FactoryBean的區(qū)別示例詳解

    這篇文章主要為大家介紹了BeanFactory和FactoryBean的區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 在Java編程中使用正則表達(dá)式

    在Java編程中使用正則表達(dá)式

    這篇文章主要介紹了在Java編程中使用正則表達(dá)式,注意使用matches()方法檢測一下Java對正則表達(dá)式的支持情況,需要的朋友可以參考下
    2015-08-08
  • Java報錯sun.misc.Unsafe.park(Native Method)問題

    Java報錯sun.misc.Unsafe.park(Native Method)問題

    這篇文章主要介紹了Java報錯sun.misc.Unsafe.park(Native Method)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java實現(xiàn)FTP文件的上傳和下載功能的實例代碼

    Java實現(xiàn)FTP文件的上傳和下載功能的實例代碼

    FTP 是File Transfer Protocol(文件傳輸協(xié)議)的英文簡稱,而中文簡稱為“文傳協(xié)議”。接下來通過本文給大家實例講解Java實現(xiàn)FTP文件的上傳和下載功能,需要的的朋友一起看看吧
    2016-11-11
  • Java如何使用ConfigurationProperties獲取yml中的配置

    Java如何使用ConfigurationProperties獲取yml中的配置

    這篇文章主要介紹了Java如何使用ConfigurationProperties獲取yml中的配置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java實現(xiàn)輕松提取word和pdf文檔內(nèi)容

    Java實現(xiàn)輕松提取word和pdf文檔內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實現(xiàn)輕松提取word和pdf文檔內(nèi)容,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-10-10
  • SpringBoot?讀取yml文件的多種方式匯總

    SpringBoot?讀取yml文件的多種方式匯總

    這篇文章主要介紹了SpringBoot讀取yml文件的幾種方式,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05

最新評論

武清区| 杨浦区| 县级市| 西贡区| 鱼台县| 大理市| 青龙| 融水| 阿瓦提县| 龙门县| 黄大仙区| 法库县| 泰安市| 章丘市| 黑水县| 南澳县| 饶平县| 赣州市| 吉首市| 分宜县| 伊春市| 和静县| 澄江县| 寿宁县| 紫云| 清镇市| 绩溪县| 湖口县| 石家庄市| 石林| 始兴县| 呼图壁县| 福贡县| 锡林郭勒盟| 尼木县| 栖霞市| 乡城县| 定州市| 宁远县| 高清| 海安县|