如何在Mac上安装Java8

编者注:这个问题是在2014年提出的,答案可能已经过时了。


我想用最新的JavaFX做一些编程,这需要Java8。我正在使用IntelliJ 13 CE和Mac OS X 9 Mavericks。我运行了Oracle的Java8安装程序,文件看起来像是最终在

/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仍然只列出了旧的Java1.6。

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

为什么Oracle的安装程序不把它放在真正的地方?我如何解决这个问题?

1251461 次浏览

甲骨文在易于安装和配置Java方面的记录很差,但使用自制,可以安装最新的OpenJDK(Java14):

brew install --cask adoptopenjdk8

对于许多依赖于旧版本(通常Java8)的用例,采用OpenJDK项目通过额外的步骤使其成为可能。

brew tap adoptopenjdk/openjdkbrew install --cask adoptopenjdk8

Homebrew的现有用户可能会遇到Error: Cask adoptopenjdk8 exists in multiple taps,因为之前的变通方法有不同的说明。这可以通过使用brew install --cask adoptopenjdk/openjdk/adoptopenjdk8完全指定位置来解决。

我有一些应用程序同时使用Java7和8,并且必须一直来回。

我使用Johan写的这个脚本:

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

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

Java7

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

Java8

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


更新推荐!!!

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

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

注意:OracleJava8/9/10不再可供公众下载(许可证更改)。

首先从终端安装和更新酿造

bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew tap homebrew/cask-versions
brew update

新截至2019年6月

要从AdoptOpenJDK安装JDK:

brew tap adoptopenjdk/openjdk
brew install --cask adoptopenjdk8brew install --cask adoptopenjdk9brew install --cask adoptopenjdk10brew install --cask adoptopenjdk11

Java8:

brew install --cask java8

Java最新:

brew install --cask java

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

虽然这可能无法帮助您解决当前的安装问题,但这是一个解决方案,这意味着您可以避开与尝试在开发机器上正确运行Java相关的问题雷区!

好处是:

  1. 无需在本地机器上设置任何版本的Java(只需在从Docker Hub提取的容器中运行Java)
  2. 很容易切换到不同版本的Java,只需更改容器上的标签。
  3. 项目依赖项安装在容器中-所以如果你搞砸了你的配置,你可以简单地删除容器并重新开始。

一个非常简单的例子:

创建一个Dockerfile

FROM java:8COPY . /usr/src/myappWORKDIR /usr/src/myapp
  • 这里我们指定运行SDK版本8的Java容器(java:8-要使用Java7,您可以指定: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-composfile文件)
  • 该行的其余部分是在容器内运行的命令。

这是一个很酷的方式来处理为不同的应用程序运行不同版本的Java,而不会使您的本地设置一团糟:)。

这是一个稍微复杂一点的例子,它有Maven和一个简单的Spring应用程序

免责声明:

使用brew

brew install Caskroom/cask/java

下面的步骤为我工作。

1)卸载所有jdks

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

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

2)安装苹果jdk。

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

这就是所有它会像一个魅力。

最简单的方法

1) brew cask install java
2) java -version
java version "1.8.0_131"Java(TM) SE Runtime Environment (build 1.8.0_131-b11)

P. S-Cask是Homebrew的扩展,旨在管理大型Mac二进制文件和图形应用程序,但使用Homebrew界面。另请参阅Apple StackExchange上的这个答案

我也有同样的问题要解决,因为我需要安装JDK8才能运行Android SDK Manager(因为看起来JDK9不能很好地工作)。但是,我告诉你如何在Mac(Sierra)上解决所有问题。

首先,你需要brew与木桶和jenv

  1. 你可以在这里找到一个有用的指南,自制木桶安装指南。记住点击终端中运行的“caskroom/version”: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 Gistbrew-java-and-jenv.md、这个博客在Mac上安装多个JDKJenv网站上找到其他有用的信息

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

$ brew tap homebrew/cask-versions$ brew cask install java8

为了让java8安装。

如果您的机器上有几个Java版本,并且您想在运行时动态选择它,例如,在我的情况下,我有两个版本:

ls -la /Library/Java/JavaVirtualMachinesdrwxr-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/Homeexport PATH=$JAVA_HOME/bin:$PATH

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

Java7:

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

Java8:

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

保存文件后,请快跑source /etc/profile应该可以工作。以下是我相应地使用第一个和第二个选项时的结果:

Java7:

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

Java8:

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

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

brew cask install caskroom/versions/java8

最简单的是从以下站点下载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/Homeexport PATH=$JAVA_HOME/bin:$PATH

最后

source ~/.bash_profile

tl; dr

/Library/Java/JavaVirtualMachines/是安装JVM的正确位置。几年来一直如此。多年前,使用了其他位置,但不再使用。

您可以选择多个供应商来获取安装程序应用程序以在Mac上安装Java实现。下载安装程序以在本地运行,然后丢弃,就像您通常对许多应用程序所做的那样。

您的问题提到JavaFX/OpenJFX。您可能会发现使用与OpenJFX库捆绑在一起的Java实现很方便,例如BellSoft的LibericaFX或Azul Systems的ZuluFX

使用安装程序,卢克

其他建议自制包管理器的答案对我来说似乎有点极端。我确信自制有一些很好的用途。但是要简单地运行Java,或者Java编程,安装自制是一个不必要的额外步骤。安装自制(包管理器)为了获得Java的单一目标,就像建造一个跑道来停放你的车而不是使用你的车道。如果你已经有了它,好吧,使用它。但是向那些只需要Java的人建议自制是糟糕的建议。

还没有使用Home brew的人可以简单地从受信任的来源下载Mac安装程序。

您可以从多个来源获得易于使用的安装程序应用程序,以便在Mac上Java。

以下是查找Java11来源的流程图,其中一些还提供Java8。

指导您为Java11实现选择供应商的流程图

从供应商(如Adoptia(AdoptOpenJDK.net))下载安装程序。

AdoptOpenJDK.net下载页面

运行安装程序。

安装程序运行截图

JavaVirtualMachines文件夹现在正确

为什么Oracle的安装程序不把它放在真正的地方?我如何解决这个问题?

没问题。

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

文件夹截图

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

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


Java9&10&11

早在2010年,苹果加入就是OpenJDK项目,还有OracleIBM红帽Azul和其他Java供应商。每个成员都为统一的OpenJDK代码库贡献源代码、测试和反馈。

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

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

新的发布节奏

请注意,在2017年,Oracle、JCP和OpenJDK已经采用了新的快速“释放列车”计划,以可预测的方式交付定期计划的Java版本。

阅读这篇2018-07 Azul Systems博客文章,了解更多细节,消除Java更新混乱Simon Ritter

阅读Java仍然自由

供应商

有关过去和现在的JVM实现的相当详尽的列表,请参阅维基百科的这个页面

这里是针对几个厂商的讨论,更多厂商见上图

oracleJDK

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

自收购Sun以来的这些年里,Oracle将两个JVM引擎热点JRocket的最佳部分结合在一起,并将它们合并到OpenJDK项目中,作为他们自己的品牌Java实现的基础。

他们的新业务计划,截至2018年,是提供甲骨文品牌的Java实现,在生产中收费,在开发/测试/演示中免费使用。支持以前的版本需要付费支持计划。他们已经宣布他们的品牌版本打算与OpenJDK版本功能平等。他们甚至将他们的商业附加组件,如飞行记录仪捐赠给OpenJDK项目。

Oracle还发布了不支持的OpenJDK构建:http://jdk.java.net/

Oracle已经生产了一个专用的JDK,GraalVM

祖鲁 by Azul

azul系统提供了各种JVM产品。

  • 他们的Zulu系列直接基于OpenJDK,并且可以免费使用可选的付费支持计划。
  • 他们的Zing系列提供商业JVM产品,增强了替代技术实现,例如专用垃圾收集器

他们的两条线都提供macOS的安装程序。

我目前在macOSHigh Sierra上使用祖鲁作为Java10.0.1,带有IntelliJ 2018.2和vaadin8。我从本页下载。顺便说一句,我确实没有发现Apple系统偏好应用程序上安装了任何与Java相关的项目。

Adoptia

Adoptia,以前称为采用OpenJDK,是社区领导的构建OpenJDK源代码二进制文件的努力。许多其他Java实现的供应商都支持Adoptia的这项工作。

  • 您可以选择热点OpenJ9引擎。
  • 适用于macOS、Linux和Windows以及其他平台的构建。

OpenJ9 by Eclipse

OpenJ9项目是JVM引擎的另一个实现,是热点的替代方案。

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

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

选择Java供应商的动机


如何安装

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

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

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

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

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

 brew cask install java8

失败并出错:

Error: No available formula with the name "java8"

使用

brew cask install caskroom/versions/java8

我如何找到“caskroom/version/java8”:使用brew搜索命令:

brew cask search java8

在macHigh Sierra上运行这些命令

brew updatebrew tap caskroom/versionsbrew cask install java8

和指挥部核对一下

java -version

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

SKD man允许在Mac上安装多个版本的Java,并在这些版本之间轻松切换。

例如:

$ sdk list java================================================================================Available Java Versions================================================================================* 12.ea.20-open11.0.1-zulu> * 11.0.1-open10.0.2-zulu10.0.2-open9.0.7-zulu9.0.4-open8.0.192-zulu8.0.191-oracle+ 8.0.181-oracle7.0.181-zulu1.0.0-rc-10-grl1.0.0-rc-9-grl1.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 -versionjava 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-16OpenJDK Runtime Environment 18.9 (build 11.0.1+13)OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)```

假设:Mac机器和你已经安装了自制的。

安装cask(使用Homebrew 0.9.5或更高版本,包含cask,因此跳过此步骤):

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

安装最新的java:

$ brew cask install java

安装java 8:

$ brew cask install adoptopenjdk/openjdk/adoptopenjdk8

如果你想安装/管理多个版本,那么你可以使用'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.81.8.0.202-eaoracle64-1.8.0.202-ea

配置您要使用的java版本:

$ jenv global oracle64-1.6.0.39

设置JAVA_HOME:

$ jenv enable-plugin export

Java8在自制软件上不再可用,brew install java8将无法工作。

相反,使用:

brew cask install adoptopenjdk/openjdk/adoptopenjdk8

有关技术细节,请参阅这一承诺

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

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

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

# To install JDK8brew cask install adoptopenjdk/openjdk/adoptopenjdk8
# To be able to safely run 'brew cleanup'brew untap adoptopenjdk/openjdkbrew untap caskroom/versionsbrew cleanup

如果您将其不是用于个人使用,您可能希望使用OpenJDK来避免Oracle的任何潜在诉讼。

brew cask install adoptopenjdk8

尝试:

brew cask install java 8

它将给出以下结果

8tracksradiohelper       adoptopenjdk8            amitv87-pipcorretto8                icons8                   vmware-fusion8x48                      zulu8

接下来进入:

brew cask install adoptopenjdk8

----Java 8将安装在Mac中。

你可以试试这个:

$ brew search jdk$ brew install --cask homebrew/cask-versions/adoptopenjdk8$ /usr/libexec/java_home

 

如果你在Mac上,那么Homebrew是安装东西的方式。

似乎版本8不再是最新的,所以它不可用使用默认的brew cask install java

相反,我通过做以下事情来管理:

brew install homebrew/cask-versions/

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

brew install homebrew/cask-versions/adoptopenjdk8

测试brew cask listjava -version

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

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

使用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版本,添加该水龙头:

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、采用jdk8,或者仅为java或采用jdk。例如:

**brew cask install java**
**brew cask install java8**
**brew cask install java11**

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

brew cask install homebrew/cask-versions/java11

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

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

备注:

采用jdk8已正式停止上游。在最新版本的macOS中,它可能会停止正常工作(或根本停止工作)。所以,这目前正在工作,但是,请不要使用此答案来安装Java8

brew cask命令在2020-12-21随着Homebrew 2.7.0的发布。上被禁用

使用以下命令安装JDK

brew install--cask安装完成

2021年(也就是2022年)这个对我有用

brew tap homebrew/cask-versions

brew install --cask adoptopenjdk8

到2022年,你只能使用brew

brew install openjdk@8

也许你需要更新PATH env:

export PATH="/usr/local/opt/openjdk@8/bin:$PATH"

…为了未来,尝试一下#0,比brew更好

curl -s "https://get.sdkman.io" | bash

然后打开新的shell并尝试list以查看您可以安装的内容;-)

sdk list java

在编写安装java 8时,您可以使用:

sdk install java 8.0.322-tem

注意:更新安装命令以匹配运行sdk list java时的某些现有标识符显示

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

截至2021年

brew install --cask adoptopenjdk/openjdk/adoptopenjdk8

MacOS Big Sur2021Java8安装指南:

  1. 转到https://profile.oracle.com/myprofile/account/create-account.jspx并注册,如果还没有;
  2. 转到https://www.oracle.com/java/technologies/downloads/#jdk17-mac
  3. 选择“Java8”;
  4. 选择“macOS”;
  5. 按jdk-8u301-macosx-x64.dmg;Java8下载页
  6. 选中复选框;
  7. 点击“下载jdk-8u301-macosx-x64.dmg”;
  8. 打开下载的文件;
  9. 遵循安装指南;

享受=)

最简单的答案是Zulu Java预构建。它们甚至带有一个为您完成所有工作的安装程序。

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

Eclipse Temurin是采用jdk的正式继承者。因此,截至2022年5月,我将使用以下

brew install --cask temurin8

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

从这里更新HomeBrew-如何在Mac上安装Java8

然后从这里安装Zulu M1 JDK。https://cdn.azul.com/zulu/bin/zulu8.66.0.15-ca-jdk8.0.352-macosx_aarch64.dmg

下载后在您的路径中设置JDK Home,如下所示:

export JAVA_HOME='/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home'export PATH=$JAVA_HOME/bin:$PATH