Если вы устанавливаете JDK через Oracle DMG, вы получаете содержимое
/Library/Java/JavaVirtualMachines/jdk1.7.0_xx/Content/Home/bin
так же как
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/
В этих двух каталогах происходит полное дублирование двоичных файлов, и они не являются символическими / жесткими ссылками друг на друга. В последнем случае Current dir является символической ссылкой на A dir на том же уровне. Однако это не объясняет, как это относится к предыдущему каталогу (/Libraray/Java/...
).
/usr/bin/java*
is/ являются символическими ссылками на двоичные файлы в каталоге /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/...
Откровенно говоря, это беспорядок - почему это так?