如何在Mac上安装Java 8

 郭健曲 发布于 2023-01-08 11:30

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

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

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

      您可以在这里找到有用的指南,Homebrew Cask安装指南.请记得点击终端中运行的"caskroom/versions": brew tap caskroom/versions

      之后,安装jenv: brew install jenv

      安装任何你想要的版本桶 brew cask install java8(或java7或者java,如果你想安装最新版本,jdk9)

      最后一步是配置要运行的版本(并让jenv管理您的JAVA_HOME) jenv versions列出您计算机上安装的所有版本,然后激活您想要的版本jenv global [JDK_NAME_OF_LIST]

    您可以在此Github Gist brew-java-and-jenv.md上找到其他有用的信息,在此博客上在Mac和Jenv网站上安装多个JDK

    2023-01-08 11:30 回答
  • 不要依赖Oracle在Mac上正确安装Java.

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

    brew cask install java
    

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

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

    brew tap adoptopenjdk/openjdk
    brew cask install adoptopenjdk8
    

    要获取所有旧版本java的列表:Error: Cask adoptopenjdk8 exists in multiple taps然后使用brew cask install adoptopenjdk/openjdk/adoptopenjdk8.

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

    2023-01-08 11:30 回答
  • 我有使用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

    2023-01-08 11:31 回答
  • 似乎还没有人提到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)
                                                                                                                                                                                                             ```
    
    
    

    2023-01-08 11:31 回答
  • 假设: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
    

    2023-01-08 11:31 回答
  • 最好的方法是使用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
    

    2023-01-08 11:31 回答
  • 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 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
    

    2023-01-08 11:31 回答
  • 如果您的计算机上有多个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文件夹位于不同的位置,则该过程类似.

    2023-01-08 11:31 回答
  • 我只是在我的MBP上做了这个,并且不得不使用

    $ brew tap caskroom/versions
    $ brew cask install java8
    

    为了让java8安装.

    2023-01-08 11:31 回答
  • 如果您不是出于个人目的使用它,则可能要使用OpenJDK以避免Oracle提出任何潜在诉讼。

    brew cask install adoptopenjdk8
    

    2023-01-08 11:31 回答
  • brew cask安装caskroom/versions/java8

    2023-01-08 11:31 回答
  • JavaVirtualMachines 文件夹现在是正确的

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

    不是问题.

    该文件夹/Library/Java/JavaVirtualMachines/是macOS上JVM的新主页.

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

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


    Java 9&10&11

    早在2010年,Apple就加入了OpenJDK项目,以及Oracle,IBM,Red Hat,Azul和其他Java供应商.每个成员都为统一的OpenJDK代码库提供源代码,测试和反馈.

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

    您可以在http://openjdk.java.net找到源代码

    新发布的节奏

    请注意,在2017年,Oracle,JCP和OpenJDK已采用新的快速"发布列车"计划,以便以可预测的方式提供定期安排的Java版本.

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

    另请阅读Java Is Still Free.

    供应商

    有关过去和现在JVM实现的相当详尽的列表,请参阅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产品,增强了备用技术实现,例如专门的垃圾收集器.

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

    我目前用祖鲁语在MacOS的Java 10.0.1 海伊谢拉用的IntelliJ 2018.2和Vaadin 8.我从这个页面下载了.顺便说一下,我没有在Apple System Preferences应用程序上找到任何与Java相关的项目.

    AdoptOpenJDK.net

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

    您可以选择HotSpotOpenJ9引擎.

    可用于macOS,Linux和Windows的构建.

    Eclipse的OpenJ9

    OpenJ9项目是一个JVM的引擎的另一种实现方式,替代热点.

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

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


    如何安装

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

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

    访问该/Library/Java/JavaVirtualMachines/文件夹以查看新JVM的项目.

    运行Terminal.app等控制台并键入java -version以查看JVM的品牌和版本号.

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

    2023-01-08 11:31 回答
  • 在Mac High Sierra上运行这些命令

    brew update
    brew tap caskroom/versions
    brew cask install java8
    

    并检查命令

    java -version
    

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

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

    好处是:

      无需在本地计算机上设置任何版本的Java(您只需在从Docker Hub提取的容器中运行Java)

      只需更改容器上的标签,即可轻松切换到不同版本的Java.

      项目依赖项安装在容器中 - 因此,如果您搞砸了配置,您可以简单地核对容器并重新开始.

    一个非常简单的例子:

    创建一个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和一个简单的Spring应用程序

    免责声明:

    我没有在像IntelliJ这样的IDE中尝试过这个 - 所以不能完全确定这方面的工作方式.虽然看起来码头支持即将到来

    这是一个运行带有Spring Boot,Zuul和Docker的微服务的一个更复杂的例子

    2023-01-08 11:31 回答
  • 对于El Capitan,SierraHigh Sierra

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

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
    brew tap homebrew/cask-versions
    
    brew update
    

    Java 8:

    brew tap adoptopenjdk/openjdk
    
    brew cask install adoptopenjdk8
    brew cask install adoptopenjdk9
    brew cask install adoptopenjdk10
    brew cask install adoptopenjdk11
    

    Java最新消息:

    brew cask install java8
    

    2023-01-08 11:32 回答
  • 使用brew

    brew install Caskroom/cask/java
    

    2023-01-08 11:32 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有