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

一篇文章徹底搞懂macOS如何決定java環(huán)境

 更新時間:2025年09月30日 11:39:49   作者:堅強的小狼  
MacOS作為一個功能強大的操作系統(tǒng),為開發(fā)者提供了豐富的開發(fā)工具和框架,下面這篇文章主要介紹了macOS如何決定java環(huán)境的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

打開 macOS 的終端輸入 java --version,如果有如下輸出,說明安裝過 java 環(huán)境。

?  ~ java -version
openjdk version "24.0.1" 2025-04-15
OpenJDK Runtime Environment (build 24.0.1+9-30)
OpenJDK 64-Bit Server VM (build 24.0.1+9-30, mixed mode, sharing)

要想知道 java 安裝的位置,可以使用如下方法:

方法一:使用 which命令

這個命令用于定位可執(zhí)行文件的路徑。

which java

??輸出結(jié)果示例:??

/usr/bin/java
  • ??注意:?? 這通常是一個“中間人”路徑。macOS 使用一種叫做“包裝器”的機制,/usr/bin/java實際上是一個替身,它會指向真正的 Java 安裝位置。要找到真實路徑,我們需要下一步。

方法二:使用 java_home工具(Apple 官方推薦)

macOS 自帶了一個名為 /usr/libexec/java_home的專用工具來管理 Java 位置,這是查詢當(dāng)前使用中的 JDK 路徑的最佳方式。

/usr/libexec/java_home

??輸出結(jié)果示例:??

/Library/Java/JavaVirtualMachines/openjdk-24.0.1.jdk/Contents/Home
  • 這個路徑就是您當(dāng)前運行的 Java 版本(OpenJDK 24.0.1)的??真正安裝根目錄??。

??進(jìn)階用法:?? 列出所有已安裝的 Java 版本

/usr/libexec/java_home -V
  • -V(大寫V)參數(shù)會列出您系統(tǒng)上安裝的??所有?? JDK,并標(biāo)明哪個是當(dāng)前正在使用的版本。

那問題來了,如果電腦上有多個 java 環(huán)境,系統(tǒng)如何決定使用哪個?

簡單答案是:??系統(tǒng)通過一套明確的優(yōu)先級規(guī)則,動態(tài)地決定了當(dāng)前終端會話使用哪個 Java 版本。?

1. 優(yōu)先級規(guī)則 (PATH 變量)

當(dāng)在終端輸入 java或 javac時,系統(tǒng)會按照 PATH環(huán)境變量中列出的路徑順序,??從左到右??尋找第一個匹配的可執(zhí)行文件。

  • 通常,/usr/bin目錄在 PATH中優(yōu)先級很高。

  • 而在 /usr/bin目錄下,存在一個名為 java的“包裝器腳本”或“符號鏈接”。

  • 這個包裝器??不會??固定指向某個版本,它會調(diào)用下一個工具來決定。

2. 決策工具 (/usr/libexec/java_home)

/usr/bin/java這個包裝器背后真正的決策者正是之前用到的命令:/usr/libexec/java_home。

這個工具會按照以下邏輯選擇??當(dāng)前默認(rèn)的 JDK??:

  • ??檢查 $JAVA_HOME環(huán)境變量??:如果用戶顯式設(shè)置了這個變量,則優(yōu)先使用它指向的路徑。

  • ??檢查特定應(yīng)用程序的配置??:某些工具(如 IDEA)可能會在特定上下文中設(shè)置路徑。

  • ??遍歷 /Library/Java/JavaVirtualMachines/和 ~/Library/Java/JavaVirtualMachines/??:查找所有已安裝的 JDK。

  • ??選擇版本號最高的 JDK??:??如果沒有其他配置,這就是默認(rèn)行為,它會自動選擇它找到的??最新、版本號最大??的 JDK。

3. 驗證決策過程

可以運行以下命令來親眼見證這個決策過程:

/usr/libexec/java_home -V

這個命令會列出??所有??發(fā)現(xiàn)的 JDK,并在最后一行明確指出當(dāng)前被選中的是哪一個(Matching Java Virtual Machines列表中的第一個)。

?  ~ /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
    24.0.1 (arm64) "Oracle Corporation" - "OpenJDK 24.0.1" ~/Library/Java/JavaVirtualMachines/openjdk-24.0.1/Contents/Home
    21.0.7 (arm64) "Microsoft" - "OpenJDK 21.0.7" ~/Library/Java/JavaVirtualMachines/ms-21.0.7/Contents/Home
    1.8.0_442 (arm64) "Amazon" - "Amazon Corretto 8" ~/Library/Java/JavaVirtualMachines/corretto-1.8.0_442/Contents/Home
~/Library/Java/JavaVirtualMachines/openjdk-24.0.1/Contents/Home
  • 輸出列表按版本號??從高到低??自動排序(24.0.1 → 21.0.7 → 1.8.0_442)

  • 系統(tǒng)默認(rèn)選擇??第一個匹配項??(即最高版本)

總結(jié) 

到此這篇關(guān)于macOS如何決定java環(huán)境的文章就介紹到這了,更多相關(guān)macOS決定java環(huán)境內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • gRPC中interceptor攔截器的使用教程

    gRPC中interceptor攔截器的使用教程

    gRPC中的interceptor攔截器分為客戶端攔截器和服務(wù)端攔截器,分別是在客戶端和服務(wù)端的請求被發(fā)送出去之前進(jìn)行處理的邏輯,下面就跟隨小編一起學(xué)習(xí)一下interceptor攔截器的具體使用吧
    2023-08-08
  • Java冒泡排序(Bubble Sort)實例講解

    Java冒泡排序(Bubble Sort)實例講解

    冒泡排序的原理:假設(shè)要求的數(shù)組是正序,兩兩進(jìn)行比較,如果前一個書比后一個數(shù)小,位置不變。如果前一個數(shù)比后一個數(shù)大,位置互換,再跟后一個數(shù)進(jìn)行比較,直到最后。就是逐步把大數(shù)送到最后,下面來個實例給大家看看
    2013-11-11
  • Spring Cloud Feign原理詳解

    Spring Cloud Feign原理詳解

    Feign 主要是幫助我們方便進(jìn)行rest api服務(wù)間的調(diào)用,本文從Spring Cloud對feign封裝的源碼中去了解其主要實現(xiàn)機制
    2021-06-06
  • Spring中數(shù)據(jù)訪問對象Data Access Object的介紹

    Spring中數(shù)據(jù)訪問對象Data Access Object的介紹

    今天小編就為大家分享一篇關(guān)于Spring中數(shù)據(jù)訪問對象Data Access Object的介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Spring MVC學(xué)習(xí)筆記之json格式的輸入和輸出

    Spring MVC學(xué)習(xí)筆記之json格式的輸入和輸出

    本篇文章主要介紹了Spring MVC學(xué)習(xí)筆記之json格式的輸入和輸出,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。
    2017-03-03
  • 淺談Java生命周期管理機制

    淺談Java生命周期管理機制

    最近有位細(xì)心的朋友在閱讀筆者的文章時,對java類的生命周期問題有一些疑惑,筆者打開百度搜了一下相關(guān)的問題,看到網(wǎng)上的資料很少有把這個問題講明白的,主要是因為目前國內(nèi)java方面的教材大多只是告訴你“怎樣做”,但至于“為什么這樣做”卻不多說
    2016-01-01
  • SpringBoot從0到1整合銀聯(lián)無跳轉(zhuǎn)支付功能附源碼

    SpringBoot從0到1整合銀聯(lián)無跳轉(zhuǎn)支付功能附源碼

    這篇文章主要介紹了SpringBoot從0到1整合銀聯(lián)無跳轉(zhuǎn)功能支付附源碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 舉例講解Java的Hibernate框架中的多對一和一對多映射

    舉例講解Java的Hibernate框架中的多對一和一對多映射

    這篇文章主要介紹了Java的Hibernate框架中的多對一和一對多映射,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • 使用React和Java實現(xiàn)文本摘要小工具

    使用React和Java實現(xiàn)文本摘要小工具

    本文將詳細(xì)介紹如何使用 React 和 Java 搭建一個小型文本摘要工具,并基于 Hugging Face 提供的 API 來實現(xiàn)智能摘要功能,感興趣的可以了解下
    2024-11-11
  • JVM?運行時數(shù)據(jù)區(qū)與JMM?內(nèi)存模型

    JVM?運行時數(shù)據(jù)區(qū)與JMM?內(nèi)存模型

    這篇文章主要介紹了JVM?運行時數(shù)據(jù)區(qū)與JMM?內(nèi)存模型,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值。需要的朋友可以參考一下
    2022-07-07

最新評論

邓州市| 六枝特区| 河东区| 登封市| 定南县| 登封市| 奎屯市| 开阳县| 漳平市| 林甸县| 梅州市| 寿宁县| 宁夏| 东平县| 高平市| 玉门市| 夏邑县| 泽普县| 钦州市| 会理县| 迁安市| 栾城县| 肃南| 河西区| 隆德县| 时尚| 南昌县| 湘乡市| 临澧县| 土默特左旗| 黄大仙区| 五大连池市| 沅江市| 阜康市| 平武县| 杭州市| 兴义市| 安陆市| 南康市| 高安市| 桐乡市|