关于macos:如何在Mac上安装Java 8

How to install Java 8 on Mac

我想用最新的JavaFX来做一些编程,它需要Java 8。我使用的是Intellij13CE和MacOSX9Mavericks。我运行了Oracle的Java 8安装程序,文件看起来像是在

1
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk

但以前的版本在

1
/System/Library/Java/JavaFrameworks/jdk1.6....

不知道为什么最新的安装程序把它放在/Library而不是/System/Library中(也不知道有什么区别)。但是EDCOX1的2位没有找到1.8,所以我发现的关于如何设置当前Java版本的所有帖子都不起作用。我试图添加一个符号链接,使其看起来像1.8在/System/Library...路径中,但没有帮助。EDCOX1,4,}仍然只列出了旧的Java 1.6。

具有讽刺意味的是,系统首选项下的"Java"控制面板只显示Java 1.8!

为什么甲骨文的安装人员不把它放在真正的地方?我该如何解决这个问题呢?


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

使用自制饮料。这将安装最新的JDK:

1
brew cask install java

如果希望在Mac上管理多个版本的Java,请考虑使用JENV。

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

1
2
brew tap caskroom/versions
brew cask install java8

获取Java的所有旧版本的列表:EDCOX1×0,然后使用EDCOX1×1。

我们使用BREW木桶,因为否则我们将使用Oracle GUI安装程序,它可能不会在您的Mac上正确安装Java。(使用BREW桶安装应用程序来安装GUI应用程序;使用BREW安装应用程序)Java不是GUI应用程序;它不需要"木桶",但至少Oracle是一致的。


El Capitan、Sierra和High Sierra

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

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

brew tap caskroom/versions

brew update

Java 8:

1
brew cask install java8

最新Java:

1
brew cask install java


我刚在我的MBP上做了这个,必须使用

1
2
$ brew tap caskroom/versions
$ brew cask install java8

以便安装Java8。


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

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

好处是:

  • 无需在本地机器上设置任何版本的Java(您只需在从DOCKER集线器中拉取的容器中运行Java)
  • 通过简单地更改容器上的标签,很容易切换到不同版本的Java。
  • 项目依赖项安装在容器中-因此,如果您搞乱了配置,您可以简单地对容器进行核攻击,然后重新启动。
  • 一个非常简单的例子:

    创建一个Dockerfile

    1
    2
    3
    FROM java:8
    COPY . /usr/src/myapp
    WORKDIR /usr/src/myapp
    • 在这里,我们指定了SDK运行的Java容器(EDCOX1,1,8)——使用Java 7,您可以只指定:EDCOX1(2)
    • 我们正在将本地目录映射到容器中的目录:/usr/src/myapp

    创建docker-compose.yml文件:

    1
    2
    3
    4
    5
    6
    7
    version:"2"

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

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

    HeloReld.JAVA

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

    因此,我们有以下文件结构:

    1
    2
    3
    4
    .
    |_ Dockerfile
    |_ docker-compose.yml
    |_ HelloWorld.java

    你可以做各种Java的事情,比如:

    编译:

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

    运行:

    1
    docker-compose run --rm java java HelloWorld
    • 注意:第一次运行此程序时,它将获取图像等。这将花费一段时间-仅在第一次运行时发生
    • docker-compose run—从容器内运行命令
    • -rm通知docker在命令运行完成后移除容器。
    • java是运行此命令的服务/容器(来自docker compose文件)的名称。
    • 行的其余部分是在容器中运行的命令。

    这是一个处理不同应用程序的不同版本Java的非常酷的方法,而不必把你的本地设置弄得一团糟。

    下面是一个稍微复杂一点的例子,其中有Maven和一个简单的Spring应用程序

    免责声明:

    • 我还没有在像Intellij这样的IDE中尝试过这一点,所以不完全确定这方面的工作方式。虽然看起来码头工人的支持即将到来
    • 下面是一个非常复杂的例子,运行带有SpringBoot、Zuul和Docker的微服务。


    我也有同样的问题要解决,因为我需要安装JDK8来运行android sdk manager(因为它似乎不适合JDK9)。但是,我告诉你我如何在Mac(Sierra)上解决所有问题。

    首先,你需要用木桶和珍妮弗来酿造。

  • 您可以在这里找到一个有用的指南,自制容器安装指南。记住点击终端中运行的"caskroom/versions"(储存库/版本):brew tap caskroom/versions
  • 之后,安装Jenv:brew install jenv
  • 用木桶安装你想要的任何版本如果您要安装最新版本JDK9,则可以使用brew cask install java8java7java
  • 最后一步是配置要运行的版本(并让Jenv管理您的Java_Home)jenv versions列出机器上安装的所有版本,然后用jenv global [JDK_NAME_OF_LIST]激活所需版本。
  • 您可以在这个github-gist brew-java-and-jenv.md上找到其他有用的信息,在这个博客上,在Mac和jenv网站上安装多个jdk。


    1
    brew cask install caskroom/versions/java8

    在Mac High Sierra上运行这些命令

    1
    2
    3
    brew update
    brew tap caskroom/versions
    brew cask install java8

    用命令检查

    1
    java -version


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

    我用约翰写的剧本:

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

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

    爪哇7

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

    爪哇8

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


    如果您的机器上有几个Java版本,并且您想在运行时动态地选择它,也就是说,在我的例子中,我有两个版本:

    1
    2
    3
    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内容来更改它们。只需在文件末尾添加(或修改)以下两行:

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

    在我的例子中,如果我想使用它,应该是如下所示:

    Java 7:

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

    Java 8:

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

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

    Java 7:

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

    Java 8:

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

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


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

    安装木桶:

    1
    2
    $ brew tap caskroom/cask
    $ brew tap caskroom/versions

    安装最新的Java:

    1
    $ brew cask install java

    安装Java 8:

    1
    $ brew cask install java8

    如果要安装/管理多个版本,则可以使用"jenv":

    安装和配置Jenv:

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

    将已安装的Java添加到JENV:

    1
    2
    $ 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:

    1
    $ jenv versions

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

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

    配置要使用的Java版本:

    1
    $ jenv global oracle64-1.6.0.39

    要设置java_主页:

    1
    $ jenv enable-plugin export

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

    相反,使用:

    1
    2
    brew tap AdoptOpenJDK/openjdk
    brew cask install adoptopenjdk8

    有关技术详细信息,请参阅此提交。


    使用安装程序,卢克

    您有多个来源来获得一个易于使用的安装程序来将Java放到您的Mac上。其他一些建议BREW或其他方法的答案对我来说似乎有点极端。只需从受信任的源下载一个Mac安装程序并运行它。好的。

    这里有一个流程图,用于查找Java 11的源代码,其中一些还提供Java 8。好的。

    flowchart for choosing a source for Java 11.好的。JavaVirtualMachines文件夹现在正确。

    Why doesn't Oracle's installer put it where it really goes? And how can I work around this problem?

    Ok.

    不是问题。好的。

    /Library/Java/JavaVirtualMachines/文件夹是MacOS上JVM的新家。好的。

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

    要卸载,只需使用finder从该文件夹中删除一个JVM。系统将提示您输入系统管理员密码以完成删除。好的。Java 9和10和11

    早在2010,苹果就加入了Oracle、IBM、Red Hat、Azul和其他Java供应商的OpenJDK项目。每个成员都向统一的OpenJDK代码库提供源代码、测试和反馈。好的。

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

    您可以在以下网址找到源代码:http://openjdk.java.net好的。新发行节奏

    请注意,在2017,Oracle、JCP和OpenJDK采用了一种新的快速发布版本,用于以可预测的方式递送定期调度的Java版本。好的。

    阅读2018-07 AZUL系统博客帖子的许多细节,消除Simon Ritter的Java更新混乱。好的。

    也读Java仍然是免费的。好的。小贩

    有关过去和现在的JVM实现的详细列表,请参见维基百科的本页。好的。

    以下是我所知道的三个当前活动的来源。好的。虚拟机

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

    多年来,自从获得Sun以来,Oracle已经将两个JVM引擎的最佳部分,热点和JROG结合在一起,并将它们合并到OpenJDK项目中,作为他们自己的Java Java实现的基础。好的。

    他们的新的商业计划,如2018,是提供一个甲骨文品牌的Java实现的费用,在生产,并没有成本用于开发/测试/演示。对早期版本的支持需要一个付费支持计划。他们已经宣布他们的品牌发布打算与OpenJDK发布具有同等的功能。他们甚至向OpenJDK项目捐赠了诸如飞行记录器之类的商业附加组件。好的。祖鲁与阿祖尔

    Azul Systems提供各种JVM产品。好的。

    • 他们的Zulu线直接基于openjdk,并且免费提供可选的付费支持计划。
    • 他们的Zing系列提供了商业化的JVM产品,这些产品通过其他技术实现(如专门的垃圾收集器)进行了增强。

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

    我目前使用的MulOS高级Sierra上的Zulu使用MeloSJ 2018.2和VAIDIN 8。我从这个页面下载的。顺便说一下,我在苹果系统首选项应用程序中没有找到任何与Java相关的项目。好的。采用openjdk.net

    AdoptOpenJDK是一项由社区领导的构建OpenJDK源代码二进制文件的工作。他们打算提供社区成员捐赠的更新。好的。

    • 您可以选择Hotspot或OpenJ9引擎。
    • 可用于MacOS、Linux和Windows的版本。

    由Eclipse创建的OpenJ9

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

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

    对于预构建的二进制文件,它们会引用上面提到的AdopOpenJDK项目。好的。如何安装

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

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

    • 访问/Library/Java/JavaVirtualMachines/文件夹查看新JVM的项目。
    • 运行诸如terminal.app和java -version类型的控制台以查看您的JVM的品牌和版本号。

    验证成功后,卸载finder中的.dmg图像。然后把你下载的.dmg文件扔掉。好的。好啊。


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

    1
     brew cask install java8

    失败并出现错误:

    1
    Error: No available formula with the name"java8"

    所以用

    1
    brew cask install caskroom/versions/java8

    如何找到"caskroom/versions/java8":使用BREW搜索命令:

    1
    brew cask search java8

    使用BREW

    1
    brew install Caskroom/cask/java


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

    SKDMAN允许在Mac上安装多个Java版本,并在这些版本之间轻松切换。更多信息请访问https://sdkman.io/usage。

    例如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    $ 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)
                                                                                                                                                                                                             ```

    最简单的方法

    1
    2
    3
    4
    5
    6
    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安装应用程序后执行额外命令"要安装,拖动此图标…"的麻烦。


    最简单的方法是从以下站点下载dmg文件并双击安装

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

    从主目录查找可用的JVM

    1
    ls -al /Library/Java/JavaVirtualMachines

    并使用相关版本更新.bash_概要文件

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

    最后

    1
    source ~/.bash_profile

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

    https://sdkman.io网站/


    下面的步骤对我有用。

    1)卸载所有JDK

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

    1
    2
    3
    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?区域环境

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

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

    这就是它的魅力所在。


    我也有同样的问题。但经过一点点的打击和审判,我终于解决了这个问题。

    尝试通过sudo rm删除1.6 sdk并重新启动Mac。

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

    安装后运行以下命令。它为JDK8提供了路径。/usr/libexec/java_home-1.8版

    您还可以运行并查看JDK 8文件夹。文件可能被隐藏。LS-AL/Lab溴e/Java/JavaValtualMa/