如何在Mac上安装Java 8

时间:2014-06-21 15:05:13

标签: java macos java-8

我想用最新的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的安装程序没有把它放到真正的位置?我该如何解决这个问题?

31 个答案:

答案 0 :(得分:1557)

不要依赖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安装APP 来安装GUI应用程序;使用 brew install APP 。)Java不是GUI应用程序;它应该不需要" cask"但至少Oracle是一致的。

答案 1 :(得分:402)

El Capitan Sierra High Sierra

首先从终端安装并更新 brew

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

brew tap caskroom/versions

brew update

Java 8:

brew cask install java8

Java最新:

brew cask install java

答案 2 :(得分:117)

我刚刚在我的MBP上做过这个,并且必须使用

$ brew tap caskroom/versions
$ brew cask install java8

为了让java8安装。

答案 3 :(得分:56)

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

虽然这可能无法帮助您解决当前的安装问题,但这是一个解决方案,这意味着您可以在与开发计算机上正确运行Java相关的问题的一个重要方面迈出一步!

好处是:

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

    创建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

    <强>声明:

答案 4 :(得分:40)

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

答案 5 :(得分:23)

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

首先,您需要使用cask和 jenv brew

  1. 您可以在此处找到有用的指南Homebrew Cask Installation Guide。 请记得点击终端中运行的“caskroom / versions”: Console.WriteLine("Processed: " + Interlocked.Increment(ref progress).ToString()); Console.SetCursorPosition(0, Console.CursorTop - 1);
  2. 之后,安装jenv: brew tap caskroom/versions
  3. 使用cask安装所需的任何版本 brew install jenv(或brew cask install java8java7如果您要安装最新版本,jdk9)
  4. 最后一步是配置要运行的版本(让jenv管理你的JAVA_HOME) java列出您计算机上安装的所有版本,然后使用jenv versions
  5. 激活您想要的版本

    您可以在此Github Gist brew-java-and-jenv.md,此博客Install multiple JDK on a Mac以及Jenv Website上找到其他有用的信息

答案 6 :(得分:22)

在 2021 年,您只需使用 brew

brew install openjdk@8

您将在这里找到您的 JDK:

/usr/local/opt/openjdk@8

我认为 sdkmanbrew "raw" 更好,但你必须在有 jdk 之前安装它

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

然后打开一个新的 shell 并尝试 list 看看你可以安装什么 ;-)

sdk list java 
sdk install java 8.0.282.hs-adpt

答案 7 :(得分:21)

brew cask install caskroom/versions/java8

答案 8 :(得分:14)

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

答案 9 :(得分:14)

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

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

答案 10 :(得分:13)

假设: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

答案 11 :(得分:12)

在mac High Sierra

上运行这些命令
brew update
brew tap caskroom/versions
brew cask install java8

并使用命令检查

java -version

答案 12 :(得分: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

答案 13 :(得分:9)

使用安装程序Luke

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

这是查找Java 11来源的流程图,其中有些还提供Java8。

flowchart for choosing a source for Java 11.

JavaVirtualMachines文件夹现在正确了

  

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

没问题。

文件夹/Library/Java/JavaVirtualMachines/JVMmacOS的新主目录。

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

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


Java 9&10&11

回到2010年,Apple joinedOpenJDK projectOracleIBMRed HatAzul和其他Java供应商。每个成员都为统一的OpenJDK代码库贡献源代码,测试和反馈。

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

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

新发布节奏

请注意,在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的最佳部分,并将它们合并到了{他们自己的Java品牌实现。

从2018年开始,他们的新业务计划是提供Oracle品牌的Java实施,但要收取生产费用,并且免费用于开发/测试/演示。支持以前的版本需要付费支持计划。他们已经宣布其品牌发行与OpenJDK发行具有同等功能的意图。他们甚至向OpenJDK项目捐赠了他们的商业附件,如 Flight Recorder

Azul的

Zulu Zing

OpenJDK提供了各种JVM产品。

  • 他们的Zulu行直接基于OpenJDK,并且可以免费使用可选的付费支持计划。
  • 他们的Zing行提供了商业JVM产品,并通过诸如专门的Azul Systems之类的替代技术实现进行了增强。

他们两人都为macOS提供安装程序。

我目前在garbage-collector 2018.2和High Sierra的macOS IntelliJ上将 Zulu 用于Java 10.0.1。我Vaadin 8。顺便说一句,我没有没有找到Apple 系统偏好设置应用程序中安装的任何与Java相关的项目。

采用OpenJDK.net

downloaded from this page是社区主导的工作,用于构建OpenJDK源代码的二进制文件。他们打算随着时间的推移提供社区成员捐赠的更新。

  • 您选择的AdoptOpenJDKHotSpot引擎。
  • 可用于macOS,Linux和Windows的内部版本。

OpenJ9 通过Eclipse

OpenJ9项目是JVM引擎的另一种实现,是 HotSpot 的替代方案。

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

对于预编译的二进制文件,它们会将您引向上述 AdoptOpenJDK 项目。


如何安装

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

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

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

验证成功后,在Finder中卸装.dmg映像。然后清除下载的.dmg文件。

答案 14 :(得分:7)

使用brew

brew install Caskroom/cask/java

答案 15 :(得分:7)

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

 brew cask install java8

失败,并显示错误:

Error: No available formula with the name "java8" 

所以用

brew cask install caskroom/versions/java8

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

brew cask search java8

答案 16 :(得分:7)

似乎没有人提到SDK man(developer documentation has some good examples)。

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

例如:

$ 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)
                                                                                                                                                                                                         ```


答案 17 :(得分:6)

对于 2021 年,这对我有用

brew tap homebrew/cask-versions


brew install --cask adoptopenjdk8

答案 18 :(得分:5)

随着 Homebrew 2.7.0 的发布,brew cask 命令在 2020 年 12 月 21 日被禁用。

使用以下命令安装JDK

brew install --cask Adoptopenjdk/openjdk/adoptopenjdk8

答案 19 :(得分:4)

使用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,采纳openjdk8,或者仅安装java或采纳openjdk作为当前版本。例如:

**brew cask install java**

**brew cask install java8**

**brew cask install java11**

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

brew cask install homebrew/cask-versions/java11

答案 20 :(得分: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 安装应用程序后执行额外命令的麻烦 - “安装,拖动此图标......”

答案 21 :(得分:2)

您可以尝试以下方法:

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

答案 22 :(得分:2)

如果您使用的是Mac,则可以使用Homebrew进行安装。

似乎版本8不再是最新版本,因此无法使用默认的brew cask install java使用。

相反,我通过执行以下操作进行管理: brew install homebrew/cask-versions/ brew install homebrew/cask-versions/adoptopenjdk8

使用brew cask list

进行测试

答案 23 :(得分:2)

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

brew cask install adoptopenjdk8

答案 24 :(得分:2)

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

答案 25 :(得分:0)

尝试:

酒桶安装java 8,将得到以下结果

8tracksradiohelper采用openjdk8 amitv87-pip corretto8 icons8 vmware-fusion8 x48 zulu8

下一步输入:brew cask install acceptopenjdk8 ----将在Mac中安装Java 8。

答案 26 :(得分:0)

对于最新版本的Intellij IDEA用户,可以选择直接从IDE下载JDK: https://www.jetbrains.com/help/idea/sdk.html#jdk-from-ide

enter image description here

答案 27 :(得分:0)

我建议使用非常容易更改Version(临时和永久)的SDK的人,并且它还提供其他SDK。我使用SDK的人已经一年多了。

https://sdkman.io/

答案 28 :(得分:-1)

截至2020年5月3日,此站点具有jre8u251的下载链接: https://java.com/en/download/mac_download.jsp

答案 29 :(得分:-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

这一切都会像魅力一样发挥作用。

答案 30 :(得分:-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 /