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


当前回答

博士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进行测试

截至2022年5月17日,本网站有jre8u33的下载链接: https://java.com/en/download/mac_download.jsp

它是一个dmg,将在MacOS上安装java 8。

我也有同样的问题要解决,因为我需要安装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

似乎还没有人提到SDK man (https://sdkman.io/)。

SKD man允许在Mac上安装多个版本的Java,并在这些版本之间轻松切换。更多信息请访问https://sdkman.io/usage。

例如:

$ sdk list java                                                                                                                                                                                                                       
================================================================================
Available Java Versions
================================================================================
   * 12.ea.20-open
     11.0.1-zulu
 > * 11.0.1-open
     10.0.2-zulu
     10.0.2-open
     9.0.7-zulu
     9.0.4-open
     8.0.192-zulu
     8.0.191-oracle
   + 8.0.181-oracle
     7.0.181-zulu
     1.0.0-rc-10-grl
     1.0.0-rc-9-grl
     1.0.0-rc-8-grl


================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

$ sdk install java 8.0.191-oracle

$ sdk use java 8.0.191-oracle

Using java version 8.0.191-oracle in this shell.                                                                                                                                                                                                      

$ java -version                                                                                                                                                                                                                        
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

$ sdk use java 11.0.1-open                                           

Using java version 11.0.1-open in this shell.

$ java -version                                                                                                                                                                                                                        openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)
                                                                                                                                                                                                         ```


我有同时使用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和它的集合。