新计算机上的多个 Java 可执行文件



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指向另一个二进制文件?


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

Mac OS/Library 文件夹存储什么?

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

这个问题是重复的,答案来自用户bdash,他应该以完整和清晰的方式回答。感谢Naveen Kumar提供了这个指示。有关完整答案,请访问:

了解 Mac 上的 Oracle Java

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

最新更新