如何在Mac上安装Java 8

问题描述 投票:726回答:22

我想用最新的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版本的所有帖子都不起作用。我已经尝试添加一个符号链接,使它看起来像是在/System/Library...路径1.8,但它没有帮助。 /usr/libexec/java_home -V仍然只列出旧的Java 1.6。

具有讽刺意味的是,“系统偏好设置”下的“Java”控制面板仅显示Java 1.8!

为什么Oracle的安装程序没有把它放到真正的位置?我该如何解决这个问题?

java macos java-8
22个回答
1591
投票

不要依赖Oracle在Mac上正确安装Java。

使用Homebrew。这将安装最新的jdk:

brew cask install java

如果要在Mac上管理多个版本的Java,请考虑使用jenv

更新:现在Java 8不再是最新版本,如果您希望Java 8以这种方式安装它:

brew tap caskroom/versions
brew cask install java8

要获取所有旧版本java:brew tap caskroom/versions的列表,然后使用brew search java

我们使用brew cask,因为我们否则会使用可能无法在Mac上正确安装Java的Oracle GUI安装程序。 (使用brew cask install APP安装GUI应用程序;使用brew install APP。)Java不是GUI应用程序;它不应该需要“桶”,但至少Oracle是一致的。


12
投票

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

我使用Johan写的这个脚本:

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

您现在可以在启动时设置它或之后调用脚本。 安装JDK for Mac。

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


12
投票

在Mac High Sierra上运行这些命令

brew update
brew tap caskroom/versions
brew cask install java8

并检查命令

java -version

12
投票

Use the Installer, Luke

您有多个来源可以获得易于使用的安装程序应用程序,以便将Java放在Mac上。其他答案暗示Brew或其他方法对我来说似乎有点极端。只需从受信任的来源下载Mac安装程序并运行它。

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

JavaVirtualMachines folder is now correct

为什么Oracle的安装程序没有把它放到真正的位置?我该如何解决这个问题?

不是问题。

文件夹/Library/Java/JavaVirtualMachines/JVMmacOSs的新家。

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

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


Java 9 & 10 & 11

早在2010年,Apple joined就是OpenJDK project,还有OracleIBMRed HatAzul和其他Java供应商。每个成员都为统一的OpenJDK代码库提供源代码,测试和反馈。

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

您将在以下网址找到源代码:http://openjdk.java.net

New release cadence

请注意,在2017年,Oracle,JCP和OpenJDK采用了new rapid “release train” plan,以便以可预测的方式提供定期安排的Java版本。

阅读这篇2018-07 Azul Systems博客文章了解许多细节,Eliminating Java Update Confusion by Simon Ritter

另请阅读Java Is Still Free

供应商

有关过去和现在JVM实现的相当详尽的列表,请参阅this page at Wikipedia

以下是我所知道的三个当前活跃的来源。

Oracle JVM

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

自收购Sun以来,Oracle已将两个JVM引擎的最佳部分组合在一起,HotSpotJRocket,并将它们合并到OpenJDK项目中,该项目用作自己的Java品牌实现的基础。

截至2018年,他们的新业务计划是提供一个Oracle品牌的Java实现,需要付费生产,并且不需要在开发/测试/演示中使用。对先前版本的支持需要付费支持计划。他们已宣布他们的品牌发布意图与OpenJDK版本的功能相同。他们甚至向OpenJDK项目捐赠了他们的商业附件,如Flight Recorder。

Zulu & Zing by Azul

Azul Systems提供各种JVM产品。

  • 他们的Zulu系列直接基于OpenJDK,并且可选择付费支持计划免费提供。
  • 他们的Zing系列提供商业JVM产品,增强了替代技术实现,如专业的garbage-collector

他们的两个系列都为macOS提供安装程序。

我目前在macOS High Sierra上使用Zulu for Java 10.0.1与IntelliJ 2018.2和Vaadin 8。我downloaded from this page。顺便说一下,我没有在Apple System Preferences应用程序上找到任何与Java相关的项目。

AdoptOpenJDK.net

AdoptOpenJDK是一个社区主导的努力来构建OpenJDK源的二进制文件。他们打算随着时间的推移提供更新,由社区成员捐赠。

  • 您可以选择HotSpotOpenJ9发动机。
  • 可用于macOS,Linux和Windows的构建。

OpenJ9 by Eclipse

OpenJ9项目是JVM引擎的另一个实现,是HotSpot的替代品。

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

对于预构建的二进制文件,它们会引用您上面提到的AdoptOpenJDK项目。


How to install

Oracle或Azul提供的安装程序操作都非常简单。只需在Mac上运行安装程序即可。将出现一个窗口,指示安装进度。

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

  • 访问/Library/Java/JavaVirtualMachines/文件夹以查看新JVM的项目。
  • 运行Terminal.app等控制台并键入java -version以查看JVM的品牌和版本号。

验证成功后,在Finder中卸载.dmg图像。然后删除您下载的.dmg文件。


8
投票

似乎没人提到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)
                                                                                                                                                                                                         ```



7
投票

使用brew

brew install Caskroom/cask/java

7
投票

最好的方法是使用Brew包管理器但命令

 brew cask install java8

失败并出错:

Error: No available formula with the name "java8" 

所以使用

brew cask install caskroom/versions/java8

我如何找到“caskroom / versions / java8”:使用brew search命令:

brew cask search java8

3
投票

最简单的方法 -

1) brew cask install java (No need to install cask separately it comes with brew)

2) java -version

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)

P.S - 什么是酿酒桶? Homebrew-Cask扩展了Homebrew,解决了使用Homebrew安装应用程序后执行额外命令 - “安装,拖动此图标......”的麻烦。


3
投票

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

3
投票

如果您使用它不是为了个人使用,您可能希望使用OpenJDK来避免任何来自Oracle的潜在诉讼。

brew cask install adoptopenjdk8

0
投票

我建议使用很容易更改版本(临时和永久)的SDK man,它也提供其他SDK。我已经使用SDK man一年多了。

https://sdkman.io/


438
投票

注意:Oracle Java 8/9/10不再可用于公共下载(许可证更改)。

首先从终端安装和更新brew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew tap caskroom/versions

brew update

新的截至2019年6月

要从AdoptOpenJDK安装JDK:

brew tap adoptopenjdk/openjdk

brew cask install adoptopenjdk8
brew cask install adoptopenjdk9
brew cask install adoptopenjdk10
brew cask install adoptopenjdk11

Java 8:

brew cask install java8

Java最新消息:

brew cask install java

0
投票

试试:

brew cask安装java 8 ,,它会给出以下结果

8track radiohelper adoptopenjdk 8 amitv87-pip correct8 icons8 vmware-fusion 8 x48 zulu8

接下来输入:brew cask install adoptopenjdk8 ----将在Mac上安装java 8。


-5
投票

以下步骤对我有用。

1)卸载所有jdks

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

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

这就是它的魅力所在。


-7
投票

我也有同样的问题。但在经过一番打击和试验之后,我才能解决这个问题。

尝试通过sudo rm删除1.6 sdk并重启你的mac。

再次下载.dmg文件。您下载的.dmg安装程序可能已损坏。再次安装。

安装后运行以下命令。它为jdk 8提供了路径./ usr / libexec / java_home -v 1.8

您还可以运行并查看jdk 8文件夹。文件可能是隐藏的。 ls -al / Library / Java / JavaVirtualMachines /


119
投票

我只是在我的MBP上做了这个,并且不得不使用

$ brew tap caskroom/versions
$ brew cask install java8

为了让java8安装。


68
投票

自制的Java8已不再可用,brew install java8无效。

相反,使用:

brew cask install adoptopenjdk/openjdk/adoptopenjdk8

有关技术细节,请参阅this commit

请注意,您可能会看到Cask adoptopenjdk8 exists in multiple taps周围的问题。这是一个已知问题,目前正在进行中,您可以在此处看到:

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

57
投票

我开始真正喜欢在本地计算机上运行应用程序的选项是使用Docker。您可以在官方JDK容器中运行您的应用程序 - 这意味着您不必担心在本地计算机上设置所有内容(或担心为不同的应用程序运行多个不同版本的JDK等)

虽然这可能无法帮助您解决当前的安装问题,但这是一个解决方案,这意味着您可以在尝试让Java在您的开发计算机上正常运行时遇到问题的雷区!

好处是:

  1. 无需在本地计算机上设置任何版本的Java(您只需在从Docker Hub提取的容器中运行Java)
  2. 只需更改容器上的标记,即可轻松切换到不同版本的Java。
  3. 项目依赖项安装在容器中 - 因此,如果您搞砸了配置,您可以简单地核对容器并重新开始。

一个非常简单的例子:

创建一个Dockerfile

FROM java:8
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
  • 这里我们指定运行SDK版本8的Java容器(java:8 - 使用Java 7,你可以指定:java:7
  • 我们将本地目录映射到容器内的目录:/usr/src/myapp

创建一个docker-compose.yml文件:

version: "2"

services:
  java:
    build: .
    volumes:
      - .:/usr/src/myapp

现在,假设我们有这个Java文件:

HelloWorld.Java

public class HelloWorld {
    public static void main(String[] args) {        
        System.out.println("Hello, World");
    }
}

所以我们有以下文件结构:

.
|_ Dockerfile
|_ docker-compose.yml
|_ HelloWorld.java

你可以做各种Java之类的事情:

编译:

docker-compose run --rm java javac HelloWorld.java 
  • 您应该注意到HelloWorld.class出现在您当前的目录中(这是因为我们已将当前目录映射到容器中我们的代码存在的位置

跑:

docker-compose run --rm java java HelloWorld 
  • 注意:第一次运行它会获取图像等。这将需要一段时间 - 它只会在第一次发生
  • docker-compose run - 从容器内运行命令
  • -rm告诉docker在命令运行完毕后删除容器
  • java是服务/容器的名称(来自我们的docker-compose文件),此命令将针对该名称运行
  • 该行的其余部分是在容器内运行的命令。

这是一种非常酷的方式来处理为不同的应用程序运行不同版本的Java而不会使您的本地设置完全混乱:)。

这是一个稍微复杂的例子,有Maven and a simple Spring app

免责声明:


23
投票

我有同样的问题要解决,因为我需要安装JDK8来运行Android SDK Manager(因为它似乎与JDK9不兼容)。但是,我告诉你我如何解决Mac(Sierra)上的所有问题。

首先,你需要用木桶和jenv酿造。

  1. 你可以在这里找到一个有用的指南,Homebrew Cask Installation Guide。请记得点击终端中运行的“caskroom / versions”:brew tap caskroom/versions
  2. 之后,安装jenv:brew install jenv
  3. 使用cask brew cask install java8安装所需的任何版本(如果要安装最新版本,请安装java7java,jdk9)
  4. 最后一步是配置要运行的版本(并让jenv管理您的JAVA_HOME)jenv versions列出您机器上安装的所有版本,然后使用jenv global [JDK_NAME_OF_LIST]激活您想要的版本

你可以在这个Github Gist brew-java-and-jenv.md上找到其他有用的信息,在这个博客上Install multiple JDK on a MacJenv Website


22
投票
brew cask install caskroom/versions/java8

15
投票

如果您的计算机上有多个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文件夹位于不同的位置,则该过程类似。


15
投票

假设:Mac机你已经安装了自制软件。

安装桶:

$ brew tap caskroom/cask
$ brew tap caskroom/versions

要安装最新的java:

$ brew cask install java

要安装java 8:

$ brew cask install java8

如果您想安装/管理多个版本,那么您可以使用'jenv':

安装和配置jenv:

$ brew install jenv
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

将已安装的java添加到jenv:

$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.11.0_2.jdk/Contents/Home

要查看所有已安装的java:

$ jenv versions

上面的命令将给出已安装java的列表:

* system (set by /Users/lyncean/.jenv/version)
1.8
1.8.0.202-ea
oracle64-1.8.0.202-ea

配置要使用的Java版本:

$ jenv global oracle64-1.6.0.39

设置JAVA_HOME:

$ jenv enable-plugin export
© www.soinside.com 2019 - 2024. All rights reserved.