首先看一下上面這篇文章,說的基本沒問題,可是在我的機器上就有問題,具體如下:
通過上面文章的問題,我們知道,直接調用的java命令,其實是/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java,通過查看版本號,發現都是openjdk 1.8.0的版本,這點沒有問題。
查看java默認安裝路徑,我們使用如下命令 /usr/libexec/java_home -V。帶-V表示列出所有安裝的,不帶表示默認的。看下面的文章
按照第一篇文章中的說法,我電腦上的默認java應該是/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/bin/java,我們看看這個java的版本是什麼
看到沒?這個java的版本是官方的11.0.2版本
當然,我們很容易想到,這個肯定是因爲我們設置了java環境變量導致的,我們進入.bash_profile中看看,確實設置了
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
export PATH=${PATH}:${JAVA_HOME}/bin
這個java的版本確實是openjdk 1.8.0版本,這就解決了我的疑惑。
總結一下:java命令的完整路徑是/usr/bin/java,這個java是軟連接,它其實了/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java,由於Current也是一個軟連接,其實是/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java。A/Commands中的java我理解,它其實是從別的地方拷貝過來的。如果我們沒有設置java的環境變量,默認的java是/usr/libexec/java_home命令指出的java,在我的電腦上是/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/bin/java,如果我們有設置java環境變量,那麼就是我們配置的java了,在我的電腦上是/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/bin/java
這裏看看/usr/libexec/java_home 是什麼意思?
java_home也是一個軟連接,它指向了/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home
目前對java_home的前世今生還不瞭解