编者注:这个问题是在2014年提出的,答案可能已经过时了。


我想用最新的JavaFX编程,它需要Java 8。我使用的是IntelliJ 13 CE和Mac OS X 9 Mavericks。我运行了Oracle的Java 8安装程序,文件看起来像是在

/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk

但以前的版本是

/System/Library/Java/JavaFrameworks/jdk1.6....

不知道为什么最新的安装程序把这个放在/Library而不是/System/Library(也不知道有什么区别)。但是/usr/libexec/java_home找不到1.8,所以我找到的所有关于如何设置当前java版本的帖子都不起作用。我已经尝试添加了一个符号链接,使它看起来像1.8在/System/Library中…路径,但没有用。/usr/libexec/java_home -V仍然只列出旧的Java 1.6。

讽刺的是,在“系统首选项”下的“Java”控制面板只显示Java 1.8!

为什么Oracle的安装程序不把它放在它真正应该去的地方?我该如何解决这个问题呢?


当前回答

对于2021年(也是2022年),这对我来说很管用

brew tap homebrew/cask-versions


brew install --cask adoptopenjdk8

其他回答

博士tl;

/Library/Java/JavaVirtualMachines/是要安装JVM的正确位置。这种情况已经持续好几年了。许多年前,其他地点也被使用过,但现在不再使用了。

你可以从几家供应商中选择一个安装程序,在你的Mac上安装Java实现。下载一个安装程序在本地运行,然后丢弃,就像你通常对许多应用程序所做的那样。

你的问题提到了JavaFX/OpenJFX。您可能会发现使用与OpenJFX库绑定的Java实现非常方便,例如BellSoft的LibericaFX或Azul Systems的ZuluFX。

使用安装程序,卢克

对我来说,其他建议Homebrew包管理器的答案似乎有点极端。我相信Homebrew有一些很好的用途。但要简单地运行Java或进行Java编程,安装Homebrew是不必要的额外步骤。为了获得Java而安装Homebrew(包管理器)就像建造一个跑道来停放汽车,而不是使用车道。如果你已经有了,很好,使用它。但是向那些仅仅需要Java的人推荐Homebrew是一个糟糕的建议。

还没有使用Home-brew的用户可以从可信来源下载Mac安装程序。

你有多个来源可以获得一个易于使用的安装程序,将Java安装到你的Mac上。在你的Mac上运行安装程序,就像运行许多其他应用程序一样。

下面是寻找Java 11源代码的流程图,其中一些也提供Java 8。

从供应商那里下载安装程序,比如Adoptium(AdoptOpenJDK.net)。

运行安装程序。

JavaVirtualMachines文件夹现在是正确的

为什么Oracle的安装程序不把它放在它真正应该去的地方?我该如何解决这个问题呢?

没问题。

文件夹/Library/Java/JavaVirtualMachines/是macOS上jvm的新主页。

要安装JVM,请使用下面讨论的安装程序。

要卸载,只需使用Finder从该文件夹中删除JVM。系统将提示您输入系统管理员密码以完成删除。


Java 9 & 10 & 11

早在2010年,苹果与Oracle、IBM、Red Hat、Azul和其他Java供应商一起加入了OpenJDK项目。每个成员都为统一的OpenJDK代码库贡献源代码、测试和反馈。

苹果为其JVM贡献了大部分mac专用代码。现在苹果不再发布自己的mac专用JVM。现在您可以选择JVM供应商,构建来自OpenJDK代码库。

你可以在http://openjdk.java.net上找到源代码

新的发布节奏

请注意,在2017年,Oracle、JCP和OpenJDK已经采用了一种新的快速“发布培训”计划,以可预测的方式定期发布Java版本。

请阅读这篇2018-07 Azul Systems博客文章,Simon Ritter撰写的《消除Java更新困惑》,了解更多细节。

请阅读Java仍然是免费的。

供应商

有关过去和现在JVM实现的详细列表,请参阅Wikipedia的这个页面。

下面是对一些供应商的讨论。有关更多供应商,请参阅上面的流程图

甲骨文JDK

Oracle为包括macOS在内的多个平台提供JDK和JRE安装程序。

在收购Sun的这些年里,Oracle将这两个JVM引擎HotSpot和JRocket最好的部分结合在一起,并将它们合并到OpenJDK项目中,作为他们自己品牌的Java实现的基础。

从2018年开始,他们的新商业计划是在生产中收费提供oracle品牌的Java实现,在开发/测试/演示中免费使用。对以前版本的支持需要付费支持计划。他们已经宣布,他们的品牌发行版将与OpenJDK发行版具有相同的特性。他们甚至将自己的商业插件(如Flight Recorder)捐赠给了OpenJDK项目。

Oracle还发布了一个不支持OpenJDK的版本:http://jdk.java.net/

Oracle开发了一个特殊用途的JDK GraalVM。

祖鲁与叮合一

Azul Systems提供了多种JVM产品。

他们的Zulu系列直接基于OpenJDK,并且是免费的,有可选的付费支持计划。 他们的Zing产品线提供了商业JVM产品,增强了替代技术实现,如专门的垃圾收集器。

他们的两个产品线都提供macOS的安装程序。

我目前在macOS High Sierra上使用Zulu for Java 10.0.1,使用IntelliJ 2018.2和Vaadin 8。我从这个页面下载的。顺便说一句,我在苹果系统首选项应用程序中没有发现任何与java相关的项目。

Adoptium,以前称为AdoptOpenJDK,是由社区领导的构建OpenJDK源代码二进制文件的努力。在Adoptium中,许多其他Java实现供应商都支持这项工作。

您可以选择HotSpot或OpenJ9引擎。 可用于macOS、Linux和Windows以及其他平台的构建。

Eclipse的OpenJ9

OpenJ9项目是JVM引擎的另一种实现,是HotSpot的替代方案。

现在由Eclipse基金会赞助,IBM于2017年捐赠了技术和支持。

对于预构建的二进制文件,它们建议您参考上面提到的AdoptOpenJDK项目。


如何安装

Oracle或Azul提供的安装程序操作起来都非常简单。只要在Mac上运行安装程序,就会出现一个窗口显示安装进度。

完成后,通过以下方法验证JVM安装:

访问/Library/Java/JavaVirtualMachines/文件夹以查看新JVM的项目。 运行一个控制台,如Terminal。然后输入java -version查看JVM的品牌和版本号。

验证成功后,在Finder中卸载.dmg映像。然后丢弃您下载的.dmg文件。

对于2021年(也是2022年),这对我来说很管用

brew tap homebrew/cask-versions


brew install --cask adoptopenjdk8

我也有同样的问题要解决,因为我需要安装JDK8来运行Android SDK管理器(因为它似乎与JDK9不太配合)。 然而,我告诉你我是如何解决Mac (Sierra)上的所有问题的。

首先,你需要和cask和jenv一起酿酒。

You can find an useful guide here,Homebrew Cask Installation Guide. Remember to tap 'caskroom/versions' running in the terminal: brew tap caskroom/versions After that, install jenv with: brew install jenv Install whatever version you want with cask brew cask install java8 (or java7 or java if you want to install the latest version, jdk9) The last step is to configure which version to run (and let jenv to manage your JAVA_HOME) jenv versions to list all versions installed on your machine and then activate the one you want with jenv global [JDK_NAME_OF_LIST]

你可以在这个Github Gist brew-java-and-jenv上找到其他有用的信息。在Mac和Jenv网站上安装多个JDK

最简单的方法是从以下站点下载dmg文件,然后双击安装

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

从主目录查找可用的jvm

ls -al /Library/Java/JavaVirtualMachines

并将.bash_profile更新为相关版本

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_XXX.jdk./Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

最后

source ~/.bash_profile

到2023年,我在苹果芯片上无法使用brew install -cask zulu8。Brew install openjdk@8也没有。对我来说唯一有效的解决方案是brew install—cask adoptopenjdk8,然后当然是vim ~/。zshrc with export JAVAC_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8。jdk/Contents/Home/在该文件中。