Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用自制软件安装Java OpenJDK:为什么不同位置上有相同版本的Java?_Java_Macos_Homebrew_Homebrew Cask - Fatal编程技术网

用自制软件安装Java OpenJDK:为什么不同位置上有相同版本的Java?

用自制软件安装Java OpenJDK:为什么不同位置上有相同版本的Java?,java,macos,homebrew,homebrew-cask,Java,Macos,Homebrew,Homebrew Cask,在文章和之后,我必须安装两个不同版本的Java/OpenJDK brew install java brew cask install java 现在我有了openjdk13.0.2 openjdk 13.0.2 2020-01-14 OpenJDK Runtime Environment (build 13.0.2+8) OpenJDK 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing) 也在两个不同的地方 /System/Libr

在文章和之后,我必须安装两个不同版本的Java/OpenJDK

brew install java
brew cask install java
现在我有了
openjdk13.0.2

openjdk 13.0.2 2020-01-14 OpenJDK Runtime Environment (build 13.0.2+8) OpenJDK 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing) 也在两个不同的地方

  • /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/
  • /Library/Java/JavaVirtualMachines/openjdk-14.jdk/Contents/Home/bin/
所以我的问题是

  • 为什么每次安装OpenJDK都有两个不同的位置
  • 如何确定我的系统上是否安装了更多JDK?运行了
    sudo find/-name java
    ,它用核武器攻击了我的终端(参见日志)
  • 如何知道这些不同版本的java是如何安装的
  • 我知道JDK是Java SDK,JRE(Java运行时环境)是oracle的东西,我认为OpenJDK没有(?)但是看看OpenJDK,什么是“JMC”和“Java SE”
      您看到的是JDK在macOS上的工作方式。但基本上你应该知道,我们有两个实体称为JDK和JRE。JDK是java开发人员编译和运行应用程序的工具。JRE是客户端运行java应用程序的运行时。JDK包含一个JRE,所以当您有JDK时,不需要安装JRE

      JDK是一个基于操作系统的文件夹,可以复制粘贴到任何需要的地方,只需将bin文件夹添加到
      路径中即可。因此,您可能有很多JDK文件夹,但只有添加到
      路径中的一个文件夹是当前正在工作的JDK,并且它们在一个环境中不能同时工作,但是您可以在不同的用户配置文件上有多个Java版本

    • 您所拥有的是一个安装,其元数据和链接遍布整个macOS
    • 你可以在你的硬盘上放多个JDK文件夹,但目前只有一个在工作,这就是你在用户配置文件中的文件夹
    • 我不知道如何知道它们是如何安装的。您可以在操作系统中查询诸如brew之类的工具,以了解它们是否安装了java,而不是来自JDK本身
    • JMC是java任务控制,它是java应用程序的监控应用程序。正如我所说,JRE是运行应用程序的运行时,OpenJDK本身也包括一个运行时。JavaSE是Java标准版的规范,因为我们还有其他版本 openjdk 14 2020-03-17 OpenJDK Runtime Environment (build 14+36-1461) OpenJDK 64-Bit Server VM (build 14+36-1461, mixed mode, sharing)