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


当前回答

Brew search openjdk 找到一些openjdk公式,在2021年,brew将提供openjdk11和openjdk8作为选项。

其他回答

Oracle在简化Java安装和配置方面的记录很差,但使用Homebrew,最新的OpenJDK (Java 14)可以安装:

brew install --cask adoptopenjdk8

对于依赖于旧版本(通常是Java 8)的许多用例,AdoptOpenJDK项目通过一个额外的步骤使之成为可能。

brew tap adoptopenjdk/openjdk
brew install --cask adoptopenjdk8

现有的Homebrew用户可能会遇到错误:Cask adoptopenjdk8存在于多个点击中,这是由于之前使用不同指令的解决方案。这可以通过使用brew install——cask adoptopenjdk/openjdk/adoptopenjdk8完全指定位置来解决。

Java8不再可用,brew安装Java8将无法工作。

相反,使用:

brew cask install adoptopenjdk/openjdk/adoptopenjdk8

有关技术细节,请参阅此提交。

请注意,您可能会在多个水龙头中看到有关Cask adoptopenjdk8的问题。这是一个已知的问题,目前正在解决,你可以在这里看到:

https://github.com/AdoptOpenJDK/homebrew-openjdk/issues/106

对于那些不想详细介绍的人,这里有一个总结:

# To install JDK8
brew cask install adoptopenjdk/openjdk/adoptopenjdk8

# To be able to safely run 'brew cleanup'
brew untap adoptopenjdk/openjdk
brew untap caskroom/versions
brew cleanup

Eclipse Temurin是adoptopenjdk的官方继承者。 因此,从2022年5月开始,我会使用以下方法

brew install --cask temurin8

安装完成后,JDK 8安装在/Library/Java/JavaVirtualMachines/temurin-8.jdk目录下

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

brew cask install caskroom/versions/java8