macOS - 如何安装 Java 17

macOS - How to install Java 17

有人可以告诉我在 Mac 上安装 Java 的步骤吗?

我做到了brew install java

我明白了

Warning: openjdk 17.0.1 is already installed and up-to-date.
To reinstall 17.0.1, run:
  brew reinstall openjdk

如果我做 java -版本,我明白了。

openjdk version "13.0.8" 2021-07-20

如果我导航到 /Library/Java,我有 2 个空目录。

java17安装在哪里??

Java不介意安装多个版本。这通常是必需的; java 不向后兼容(它试图改变很少,但是例如 java8 到 java9 的转换破坏了很多东西,其中很多都是不必要的,而且很多都不是合理预期的或可由库和应用程序修复,因此 java8 上只有 运行 一堆 java 应用程序和库 - 只是一个例子)。

所以,是的,你已经安装了 JDK17。另外,是的,如果你只是 运行 java 而没有指定你想要哪个,那么你恰好在这里得到 java13。

要查看所有已安装的 java,您可以 运行:

/usr/libexec/java_home -V

到 'override',您可以使用类似的东西(取决于您在 mac 上使用的 shell):

export JAVA_HOME=`/usr/libexec/java_home -v 17`

(反引号的意思是:运行 然后获取它的输出并将其视为表达式的 'value'。在这里,将其分配给 JAVA_HOME env var。 -v 17 请求到 java 17 的路径。-V 选项列出了所有内容并且是为了您的眼球,而不是脚本。-v 选项主要用于脚本,这就是我们如何在这里使用它)。

JAVA_HOME 决定某些东西使用哪个 java,但是当你输入 java 时得到的 java/usr/bin/java,并且可执行文件实际上只是一个包装器,它从所有已安装的版本中选择 java 到 运行。它使用 JAVA_HOME 来决定哪个 java 实际 运行。所有常用命令都有包装器(javac)。你总是可以 运行 例如which javac 看看实际上是什么 运行s;你可能会看到 /usr/bin/javac/usr/bin 中的所有内容都是这些包装器之一,它查看 JAVA_HOME 然后 运行 找到它在 那里 .

的二进制文件

要使用 homebrew 安装的版本而不是 OS 安装的版本,您可以通过键入

从 homebrew 获取详细信息
brew info java

目前显示

For the system Java wrappers to find this JDK, symlink it with sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

openjdk is keg-only, which means it was not symlinked into /opt/homebrew, because macOS provides similar software and installing this software in parallel can cause all kinds of trouble.

If you need to have openjdk first in your PATH, run: echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ~/.zshrc

For compilers to find openjdk you may need to set: export CPPFLAGS="-I/opt/homebrew/opt/openjdk/include"

安装步骤

你问过:

let me know the steps to install Java on a Mac.

  1. Adoptium, Azul Systems, Bellsoft, Amazon、Oracle、Microsoft、SAP 等供应商处免费下载安装程序。
  2. 运行 安装程序。
  3. 完成后退出安装程序。
  4. 通过在命令行中键入 Terminal.app 来验证安装:
    java --version
  5. 删除您下载的安装程序。
  6. 配置您的 IDE 以使用您安装的新 Java 实现。

Java 位置

你问过:

Where is java 17 installed??

/Library/Java/JavaVirtualMachines/

在 Finder 中,选择 Go > Go to Folder,然后粘贴 /Library/Java/JavaVirtualMachines/.

请注意,这不是您个人文件夹中的Library文件夹。我们不是指的是/Users/your_user_name/Library/…。我们指的是在 Mac.

上跨 all the user accounts 应用的根 Library 文件夹

你说:

I did brew install java

不需要 Homebrew 包管理器。如果您已经喜欢使用 brew 工具,请继续。但是,如果您是 Homebrew 的新手,如果您的唯一目标是安装 Java,请跳过它。就像许多 Mac 应用程序一样,只需为 Java 使用安装程序。

JavaFX

您为 javafx 添加了标签。

请注意,对于 JavaFX,您有两个选择:

  • 在您的开发项目和最终应用程序中包含必要的 OpenJFX 库,
  • 使用包含 JavaFX/OpenJFX 库的 JDK。

至少有两家供应商提供 JDK 个包含 JavaFX/OpenJFX 库的安装程序:

  • Azul 系统 (ZuluFX)
  • 贝尔软件 (LibericaFX)

如果您在 Mac

上使用 Intellij,则此答案特别适用

在 IntelliJ 中,您可以使用 IDE 添加新的 JDKs of selected 版本来自普通供应商。说明在这里:

设置 JDK 时,您可以:

  1. Select 已在 IDE 或
  2. 中注册的预先存在的 JDK
  3. 使用 Add JDK 选项添加您之前使用 中概述的方法下载和安装的新 JDK 或者
  4. 使用 下载 JDK 选项选择 JDK 的供应商和版本,IDE 将自动下载、安装和为 selection 提供。
    • Idea 安装的 JDK 将位于与 中概述的相同位置,用于手动安装 /Library/Java/JavaVirtualMachines/

一个常见的问题是为项目注册的 JDK 版本与终端中使用的默认版本不同。这有时可能意味着应用程序在 Idea 中 运行 时工作,然后在终端中 运行 时失败(或者,至少它是针对你没有的 JDK 版本执行的)没想到)。

至 select 终端中 JDK 至 运行 的版本,按照 中所述配置 Java 主页设置。

export JAVA_HOME=`/usr/libexec/java_home -v 17`

此外,某些工具如 openjfx maven 插件在执行对 JDK 工具(如 jlink)的调用时不会使用在 Idea 中编辑的 java 版本 select,但会相反,他们有自己的机制来寻找要使用的 JDK(例如,查看 JAVA_HOME 或使用 Maven toolchains plugin)。因此,检查 JAVA_HOME 变量并确保将其设置为合理的值总是好的,无论是为了终端执行还是为了有效使用可能依赖它的 Java 开发工具。

我觉得这里的回答不完全是题外话,但是从我的角度来看,我的情况和作者的完全一样。我已经安装了 java 8、11 和 13。它们都位于:

/Library/Java/JavaVirtualMachines/

尽管如此,当我试图找到 JDK 17 的路径时,它位于:

/usr/local/Cellar/openjdk

我使用 Mac OS Big Sur 并且 JDK 安装了 homebrew

2022 年,您可以使用 brew

brew install openjdk

也许您需要更新 PATH env:

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

……以后试试sdkman,比brew

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

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

sdk list java 

在撰写本文时,您可以使用:

sdk install java 17.0.1-tem

以下方法安装 Java,无需任何其他工具或包管理器。

转到 https://jdk.java.net/17/ 并下载最新的 macOS 存档。

这适用于 x64(Intel CPU)或 AArch64(Apple Silicon / M1 CPU)。

然后,打开终端,将下载的存档解压到 Java 个虚拟机的系统路径:

cd Downloads
tar xzf openjdk-17.0.2_macos-aarch64_bin.tar.gz -C /Library/Java/JavaVirtualMachines