OS X的Java究竟藏在哪里?

今天重裝了OS X,作為一枚java猿,完事之后的第一件事情就是安裝JDK咯,以前安裝JDK真沒注意過,以前都是直接去Oracle下載dmg鏡像,然后一路next啪啪啪就安裝好了,然后網上搜索個如何配置JAVA_HOME的教程然后就收工了。從來沒有多想,真是夠無腦的!


然而今天不一樣啊,突然想不起Java安裝在哪個文件夾里面了,臥槽這是大事啊,文件夾都不曉得,你配個鬼的JAVA_HOME啊。于是我在終端敲了敲java,神奇的事情出現了,有反應!而且java -version也可以,試一下javac呢,還是可以!我就懵了!我啥都沒干就可以了?OS X這么智能?自己給我添加了JAVA_HOME?于是斷然 echo $JAVA_HOME,結果是啥都沒有,更蒙蔽了。臥槽你是在耍我么?


仔細想想,你敲java要有反應,那么java必須在$PATH里面,想到這里就好辦了,所以咋辦呢,去$PATH找java啊,但是那么幾個文件夾,找個錘子哦。
于是我不服氣了,所以我

MacBook-Pro:~ jsy$ which java
/usr/bin/java
然后我
cd  /usr/bin
ls -l java
lrwxr-xr-x  1 root  wheel  74  7 26 13:38 java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

臥槽666,原來這個java是個假貨,他只是鏈接到
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java這個目錄而已,實不相瞞,這里面的Current文件夾也是個假貨,它暗度陳倉到A這個文件夾了

MacBook-Pro:Versions jsy$ ls -l Current
lrwxr-xr-x  1 root  wheel  1  7 26 13:36 Current -> A

于是順藤摸瓜,進入A,這下子收獲大了去了,因為,臥槽看不懂啊,但是主要的就是Commands目錄下,有著全套的java命令,我是無法理解的,Google之后發現,原來這是在JDK安裝的時候生成的,這下子就理解了,都是OS X在作妖蛾子,最后的最后,真正的JDK安裝目錄在哪里呢?真相只有一個,那就是在
/Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk 里面,原始天尊就他一個,其余的在
/System/Library/Frameworks/JavaVM.framework/Versions
是安裝的時候生成的副本, /usr/bin里面的java不過是個鏈接指向/System/Library/Frameworks/JavaVM.framework/而已,就這這么逐層理解,就清楚了。


那么問題來了,你球事沒有搞這些有卵用啊?弄個山路十八彎干啥,還嫌哥不夠忙啊?但是Google告訴了我,這些都是為了切換JDK版本方便,比如你機子里面有1.6,1.7,1.8的jdk,更巧的是你丫的還有32位的和64位的,這不是搞事情么,于是為了廣大開發者切換jdk的方便,就這么設計的七彎八繞,然后百川歸海,交由/usr/libexcu下面的java_home來管理,這個java_home是個應用程序,用來返回某個特定版本的安裝目錄,也就是之前我們說的原始天尊的目錄,咋用呢,比如我安裝的是1.8的jdk,要設置環境變量JAVA_HOME,就得拿到1.8版本的jdk的安裝目錄,怎么拿?看下面

MacBook-Pro:A jsy$ /usr/libexec/java_home -v 1.8
/Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home

清晰的返回了我1.8版本的JDK的安裝目錄,于是我可以設置JAVA_HOME了,具體怎么設我就不寫了,很多人都寫過了。
參考資料
java在哪里
java_home

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容