3 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
這個(gè)答案試圖解決:如何在macOS El Capitan或更新版本(Sierra,High Sierra,Mojave)上安裝多個(gè)版本的JDK以控制系統(tǒng)范圍內(nèi)的Java版本(不僅僅是當(dāng)前運(yùn)行的shell )。據(jù)我所知,目前的答案都沒有(*)。
作為開發(fā)人員,我使用了幾個(gè)JDK,我想輕松地從一個(gè)JDK切換到另一個(gè)。通常我有最新的穩(wěn)定用于一般用途,其他用于測(cè)試。但我不希望系統(tǒng)(例如,當(dāng)我啟動(dòng)我的IDE時(shí))使用我現(xiàn)在擁有的最新“早期訪問(wèn)”版本。我想控制系統(tǒng)的默認(rèn)值,這應(yīng)該是最新穩(wěn)定的。
以下方法至少適用于Java 7到12(在撰寫本文時(shí)的早期訪問(wèn)),使用Oracle JDK或OpenJDK(包括在2018年10月中旬之后生成的AdoptOpenJDK構(gòu)建)。
沒有第三方工具的解決方案
將所有JDK保留在其默認(rèn)位置下
/Library/Java/JavaVirtualMachines
。系統(tǒng)默認(rèn)選擇最高版本。要排除默認(rèn)情況下選擇JDK,請(qǐng)將其重命名
Contents/Info.plist
為Info.plist.disabled
。當(dāng)$JAVA_HOME
指向JDK 或在腳本或配置中顯式引用時(shí),仍然可以使用該JDK 。它只會(huì)被系統(tǒng)java
命令忽略。
系統(tǒng)啟動(dòng)程序?qū)⑹褂镁哂?code>Info.plist文件的最高版本的JDK 。
在具有備用JDK的shell中工作時(shí),在現(xiàn)有答案(jenv
或自定義別名/腳本/usr/libexec/java_home
等)中選擇您的方法。
這個(gè)要點(diǎn)的調(diào)查細(xì)節(jié)。
(*)當(dāng)前的答案要么已過(guò)時(shí)(不再對(duì)macOS El Capitan或Sierra有效),要么只解決單個(gè)JDK,或者不解決系統(tǒng)范圍問(wèn)題。許多人解釋了如何更改$JAVA_HOME
,但這只會(huì)影響當(dāng)前的shell以及從那里啟動(dòng)的內(nèi)容。它不會(huì)影響從OS啟動(dòng)器啟動(dòng)的應(yīng)用程序(除非您更改正確的文件和注銷/登錄,這是繁瑣的)。同樣對(duì)于jenv來(lái)說(shuō),它很酷而且全部,但據(jù)我所知它只是改變環(huán)境變量,因此它具有相同的限制。
添加回答
舉報(bào)