2

TLDR;为什么 brew/cask(甚至可能是本机安装程序)为 java 安装多个可执行文件?

系统数据:

MacOS 10.13 / 高山脉

我正在设置一台新的开发机器,在安装 java 之前运行以下命令:java并被告知找不到二进制文件。

从这里我跑了brew cask install java。此时,java 变得可执行并运行which java,为我提供了 usr/bin/java 的路径。不出所料,这个位置原来是一个链接

/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

出于好奇,我跑了:/usr/libexec/java_home返回:

/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home

相信这是 JAVA_HOME 环境变量的典型位置。但是,当查看 java bin 指向的路径时,您会注意到位置不同。JAVA_HOME/bin指向一个位置/Librarywhilewhich java指向一个位置System/Library我知道 Mac 计算中有一条一般规则,即 /System 资源是不应被蒙混过关的基本机器设置,而 /Library 资源是供用户安装和管理的软件,但我不明白为什么我会将完全相同的可执行文件存储在两个地方。

我的问题是,为什么相同的软件安装在两个不同的地方,为什么会JAVA_HOME/bin指向一个二进制文件而which java指向另一个?


我在询问之前使用的资源:

mac os /Library 文件夹存储什么?

Mac OS X 10.8 Mountain Lion 上的 Oracle(Sun 的)JDK/JRE 安装在哪里?

4

1 回答 1

0

这个问题是重复的,答案来自用户 bdash,他以完整而清晰的方式回答了所有功劳。感谢提供此指针的 N​​aveen Kumar。完整答案请访问:

在 Mac 上了解 Oracle 的 Java

从谷歌来到这个页面的人的简短回答是 /System/Library 中的项目是存根而不是真正的 java 可执行文件。JDK 的真实位置是 /usr/libexec/java_home 暴露的位置。

于 2018-06-04T13:24:37.233 回答