如何在macOS中設(shè)置環(huán)境變量JAVA_HOME

這篇文章將告訴你如何分別在舊的mac osx上和最新的macOS11+上設(shè)置JAVA_HOME

  1. macOS 發(fā)布?xì)v史
  2. 什么是/usr/libexec/java_home
  3. $JAVA_HOME 和 macOS 11 Big Sur
  4. $JAVA_HOME 和 Mac OS X 10.5 Leopard
  5. $JAVA_HOME 和 older Mac OS X
  6. 在不同的 JDK 版本間切換

解決辦法
在macOS上設(shè)置 $JAVA_HOME 的步驟

  1. 明確系統(tǒng)版本
  2. 明確你使用的shell類型, bash or zsh?
  3. 對于 zsh shell, export $JAVA_HOME at ~/.zshenv or ~/.zshrc
  4. 對于 bash shell, export $JAVA_HOME at ~/.bash_profile or ~/.bashrc
  5. 打印 echo $JAVA_HOME
  6. Done。

1法挨、macOS發(fā)布?xì)v史叉跛,bash 還是 zsh蹦锋?

1.1 重溫macOS發(fā)布?xì)v史, source Wikipedia – macOS

  1. Mac OS X Public Beta
  2. Mac OS X 10.0 (Cheetah)
  3. Mac OS X 10.1 (Puma)
  4. Mac OS X 10.2 Jaguar
  5. Mac OS X 10.3 Panther
  6. Mac OS X 10.4 Tiger
  7. Mac OS X 10.5 Leopard
  8. Mac OS X 10.6 Snow Leopard
  9. Mac OS X 10.7 Lion
  10. OS X 10.8 Mountain Lion
  11. OS X 10.9 Mavericks
  12. OS X 10.10 Yosemite
  13. OS X 10.11 El Capitan
  14. macOS 10.12 Sierra
  15. macOS 10.13 High Sierra
  16. macOS 10.14 Mojave
  17. macOS 10.15 Catalina (zsh)
  18. macOS 11 Big Sur (zsh)

1.2 bash or zsh?

自 macOS 10.15 Catalina 及之后, 默認(rèn)的 Terminal shell 從 bash (Bourne-again shell) 換成了 zsh (Z shell).

  • 對于 bash shell, 我們可以設(shè)置環(huán)境變量的文件是 ~/.bash_profile~/.bashrc
  • 對于 zsh shell, 我們可以設(shè)置環(huán)境變量的文件是 ~/.zshenv~/.zshrc

可以通過環(huán)境變量 $SHELL 查看你當(dāng)前使用的shell類型

2. 什么是 /usr/libexec/java_home

2.1 從Mac OS X 10.5+, 我們可以使用 /usr/libexec/java_home 返回默認(rèn)的jdk路徑

2.2 也可以找到所有已安裝JDKs

% /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
    16 (x86_64) "Oracle Corporation" - "OpenJDK 16-ea" /Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home
    15.0.1 (x86_64) "UNDEFINED" - "OpenJDK 15.0.1" /usr/local/Cellar/openjdk/15.0.1/libexec/openjdk.jdk/Contents/Home
    14.0.2 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 14" /Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home
    1.8.0_275 (x86_64) "UNDEFINED" - "OpenJDK 8" /usr/local/Cellar/openjdk@8/1.8.0+275/libexec/openjdk.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home  

2.3 也可以運(yùn)行特殊的jdk命令

% /usr/libexec/java_home -v1.8
/usr/local/Cellar/openjdk@8/1.8.0+275/libexec/openjdk.jdk/Contents/Home 

3. $JAVA_HOME 和 macOS 11 Big Sur

從 macOS 10.15+, zsh 成為默認(rèn)的 Terminal shell, 我們可以通過 ~/.zshenv or ~/.zshrc 設(shè)置 $JAVA_HOME

~/.zshenv

export JAVA_HOME=$(/usr/libexec/java_home)

4. $JAVA_HOME 和 Mac OS X 10.5 Leopard

對于 更舊的 Mac OS X版本, bash 作為默認(rèn)的 Terminal shell, 我們可以通過 ~/.bash_profile or ~/.bashrc 設(shè)置$JAVA_HOME

~/.bash_profile

export JAVA_HOME=$(/usr/libexec/java_home)

5. $JAVA_HOME 和 更舊的 Mac OS X

對于更舊的 Mac OS X 版本, 則沒有 /usr/libexec/java_home 這樣的工具硫戈,我們需要將真實(shí)java路徑設(shè)置到 $JAVA_HOME 舅巷,如

~/.bash_profile

export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

% source ~/.bash_profile

6. JDK 版本間切換

比如忍饰,當(dāng)前 macOS 包含 4個(gè) JDK: 1.8, 14, 15, and 16, 和 默認(rèn) JDK 16卡儒。

% /usr/libexec/java_home -V

Matching Java Virtual Machines (4):
  16 (x86_64) "Oracle Corporation" - "OpenJDK 16-ea" /Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home
  15.0.1 (x86_64) "UNDEFINED" - "OpenJDK 15.0.1" /usr/local/Cellar/openjdk/15.0.1/libexec/openjdk.jdk/Contents/Home
  14.0.2 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 14" /Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home
  1.8.0_275 (x86_64) "UNDEFINED" - "OpenJDK 8" /usr/local/Cellar/openjdk@8/1.8.0+275/libexec/openjdk.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home

6.1 根據(jù)shell類型打開對應(yīng)的配置文件如 ~/.zshenv
6.2 然后通過/usr/libexec/java_home -v"{$Version}" 激活特定的 JDK 版本

如JDK8

~/.zshenv

export JAVA_HOME=$(/usr/libexec/java_home -v1.8)

假如你需要 JDK 14

~/.zshenv

export JAVA_HOME=$(/usr/libexec/java_home -v14)

假如你需要 JDK 15

~/.zshenv

export JAVA_HOME=$(/usr/libexec/java_home -v15)

6.3 Source 文件 并打印 $JAVA_HOME, 完成蜜葱。

% source ~/.zshenv

% echo $JAVA_HOME
/usr/local/Cellar/openjdk@8/1.8.0+275/libexec/openjdk.jdk/Contents/Home
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末全景,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子牵囤,更是在濱河造成了極大的恐慌爸黄,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揭鳞,死亡現(xiàn)場離奇詭異炕贵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)野崇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門称开,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人乓梨,你說我怎么就攤上這事鳖轰。” “怎么了扶镀?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵蕴侣,是天一觀的道長。 經(jīng)常有香客問我臭觉,道長昆雀,這世上最難降的妖魔是什么辱志? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮狞膘,結(jié)果婚禮上揩懒,老公的妹妹穿的比我還像新娘。我一直安慰自己客冈,他們只是感情好旭从,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著场仲,像睡著了一般和悦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上渠缕,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天鸽素,我揣著相機(jī)與錄音,去河邊找鬼亦鳞。 笑死馍忽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的燕差。 我是一名探鬼主播遭笋,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼徒探!你這毒婦竟也來了瓦呼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤测暗,失蹤者是張志新(化名)和其女友劉穎央串,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碗啄,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡质和,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了稚字。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饲宿。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖胆描,靈堂內(nèi)的尸體忽然破棺而出褒傅,到底是詐尸還是另有隱情,我是刑警寧澤袄友,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布殿托,位于F島的核電站,受9級特大地震影響剧蚣,放射性物質(zhì)發(fā)生泄漏支竹。R本人自食惡果不足惜旋廷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望礼搁。 院中可真熱鬧饶碘,春花似錦、人聲如沸馒吴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饮戳。三九已至豪治,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扯罐,已是汗流浹背负拟。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留歹河,地道東北人掩浙。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像秸歧,于是被迫代替她去往敵國和親厨姚。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容