首先看一下上面这篇文章,说的基本没问题,可是在我的机器上就有问题,具体如下:
通过上面文章的问题,我们知道,直接调用的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的前世今生还不了解