如果你通过 Oracle DMG 安装 JDK,则会得到以下内容
/Library/Java/JavaVirtualMachines/jdk1.7.0_xx/Content/Home/bin
也
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/
这两个目录中的二进制文件基本上是完全重复的,并且它们之间不是符号/硬链接。在后一种情况下,当前目录是指向同一级别的 A 目录的符号链接。但是,这并不能解释这与前一个目录 ( /Libraray/Java/...
) 有何关联。
/usr/bin/java*
/System/Library/Frameworks/
与.... 目录中的二进制文件有符号链接。
Java 在 OSX 中以这样的方式组织,其原因是否有一定的道理?
另一个观察结果是:
> /usr/libexec/java_home
生成:
/Library/Java/JavaVirtualMachines/jdk1.7.0_65.jdk/Contents/Home
因此,当/usr/bin/java
可执行文件指向该/System/Library/Framework/....
位置时,java_home 脚本会生成指向/Library/Java/JavaVirtualMachines/...
坦白说,这真是一团糟——为什么会这样?