编者注:这个问题是在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的安装程序不把它放在它真正应该去的地方?我该如何解决这个问题呢?


当前回答

请运行以下命令,它将在OS X上安装Java 8:

brew tap adoptopenjdk/openjdk
brew install --cask homebrew/cask-versions/adoptopenjdk8

注意:

Adoptopenjdk8已正式停产上游。 在最新版本的macOS中,它可能会停止正确工作(或完全停止工作)。所以,这是目前工作,但是,请不要使用这个答案来安装Java 8

其他回答

我有同时使用Java 7和Java 8的应用程序,并且必须一直来回运行。

我使用Johan写的这个脚本:

http://www.jayway.com/2014/01/15/how-to-switch-jdk-version-on-mac-os-x-maverick/

现在可以在启动时设置它,或者在启动后调用脚本。 安装Mac版JDK

Java 7

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Java 8

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


更新推荐! !:

使用jenv https://www.jenv.be/和自制。

然后它只是jenv global oracle6401.6.0.39和它的集合。

博士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文件。

如果你用的是Mac,那么Homebrew就是安装软件的方式。

似乎版本8不再是最新的,所以它不能使用默认的酿造桶安装java。

相反,我做到了以下几点:

brew install homebrew/cask-versions/

如果这个失败了,直接试试下一个:

brew install homebrew/cask-versions/adoptopenjdk8

使用brew cask list或java -version进行测试

最简单的答案是Zulu java预构建。他们甚至带有一个安装程序,为你做所有的工作。

https://www.azul.com/downloads/?version=java-8-lts&os=macos&package=jdk

随着家酿2.7.0的发布,brew bucket命令在2020-12-21被禁用。

使用以下命令安装JDK

编译install——cask adoptopenjdk/openjdk/adoptopenjdk8