【问题标题】:Multiple Java Executables on New Machine新机器上的多个 Java 可执行文件
【发布时间】:2018-11-13 06:27:56
【问题描述】:

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

系统数据:

MacOS 10.13 / High Sierra

我正在设置一台新的开发机器,在安装 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 指向/Library 中的一个位置,而which java 指向System/Library 中的一个位置我知道Mac 计算中有一条通用规则,即/System 资源是基本的机器设置,不应该被蒙混过关并且 /Library 资源用于用户安装和管理的软件,但我不明白为什么我会将完全相同的可执行文件存储在两个地方。

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


提问前我使用的资源:

what does mac os /Library folder store?

Where is Oracle's (Sun's) JDK/JRE installed on Mac OS X 10.8 Mountain Lion?

【问题讨论】:

标签: java macos macos-high-sierra java-home homebrew-cask


【解决方案1】:

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

Understanding Oracle's Java on Mac

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 2013-03-04
    相关资源
    最近更新 更多