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


当前回答

最简单的方法是从以下站点下载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

其他回答

如果你的机器上有几个Java版本,你想在运行时动态地选择它,也就是说,在我的情况下,我有两个版本:

ls -la /Library/Java/JavaVirtualMachines
drwxr-xr-x  3 root  wheel    96B Nov 16  2014 jdk1.7.0_71.jdk/
drwxr-xr-x  3 root  wheel    96B Mar  1  2015 jdk1.8.0_31.jdk/

您可以通过修改/etc/profile内容来更改它们。只需在文件末尾添加(或修改)以下两行:

export JAVA_HOME=YOUR_JAVA_PATH/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

在我的情况下,如果我想使用,它应该如下所示:

Java 7:

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

Java 8:

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

保存文件后,请运行source /etc/profile,它应该可以工作。以下是我使用第一种和第二种选择时的结果:

Java 7:

java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)

Java 8:

java -version 
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)

如果您的java文件夹位于不同的位置,这个过程是类似的。

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完全指定位置来解决。

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

使用Homebrew安装

在2018年10月3日之前,Homebrew Cask中可用的Java版本确实是Oracle JVM。但是现在,它已经更新为OpenJDK。请确保更新Homebrew,然后您将看到可供安装的最新版本。

1. 如果你还没有安装Homebrew。确保已更新:

brew update

2. 添加桶龙头,如果你还没有(或者你在步骤3中没有看到旧的Java版本):

brew tap homebrew/cask-versions

3.对于AdoptOpenJDK版本,添加tap:

brew tap adoptopenjdk/openjdk

这些桶经常更改其Java版本,并且可能还有其他带有额外Java版本的水龙头。

4. 寻找可安装的版本:

brew search java 

或AdoptOpenJDK版本:

brew search jdk     

5. 检查将要安装的版本的详细信息:

brew cask info java

或AdoptOpenJDK版本:

brew cask info adoptopenjdk

6. 安装特定版本的JDK,如java11、adoptopenjdk8,或者当前只安装java或adoptopenjdk。例如:

**brew cask install java**

**brew cask install java8**

**brew cask install java11**

您也可以使用旧版本的完全限定路径:

brew cask install homebrew/cask-versions/java11

下面的步骤对我很有效。

1)卸载所有jdk

在终端窗口中复制并粘贴下面的命令:

sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin

sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefpane

2)安装APPLE jdk。

https://support.apple.com/kb/DL1572?locale=en_US

3)从Oracle下载最新的JDK并安装,对我来说是JDK 1.82

http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

就是这样,它会像魔法一样起作用。