我想在 Mac OSX 上安装 OpenJDK Java 并让它与其他 JDK 一起工作,因为它是一个较新的版本。目前,我下载了 tar.gz 并将其放在我的路径中,但这很难维护。
我发现的唯一其他自动执行更多操作的安装是通过 Homebrew cask 安装。它看起来也只有当前版本:
brew cask info java
显示:
爪哇:13,33:5b8a42f3905b406298b72d750b6919f6
所以我可以从那里安装它,但是然后呢?我只坚持新版本吗?
原文由 Jayson Minard 发布,翻译遵循 CC BY-SA 4.0 许可协议
注意: 这些解决方案适用于各种 Java 版本,包括 Java 8 到 Java 18(LTS 版本)。这包括来自 OpenJDK、Oracle、IBM、Azul、Amazon Correto、Graal 等的替代 JDK。轻松使用 Java 7、Java 8、Java 9、Java 10、Java 11、Java 12、Java 13、Java 14、Java 15、Java 16、Java 17 甚至 Java 18!
对于如何进行安装以及管理 JDK 切换,您有几个选项。可以通过 Homebrew、 SDKMAN 、 asdf 、 Jabba 或手动安装来完成安装。可以通过 JEnv 、 SDKMAN 、 asdf 、 Jabba 或通过设置手动完成切换
JAVA_HOME
。所有这些都在下面描述。TL;DR - 首选安装方法
您可以使用您喜欢的任何方法安装 Java,包括 SDKMAN、 asdf 、Homebrew 或手动安装 tar.gz 文件。手动安装的优点是 JDK 的位置可以放置在 Mac OSX 的标准化位置。
但是,还有一些更简单的选项,例如 SDKMAN 和 asdf ,它们也可以为 JVM 安装其他重要且常用的工具。此处描述了这两个主要选项。
使用 SDKMAN 安装和切换版本
SDKMAN 有点不同,它同时处理安装和切换。 SDKMAN 还将安装的 JDK 放入其自己的目录树中,通常为
~/.sdkman/candidates/java
。 SDKMAN 允许设置全局默认版本和特定于当前 shell 的版本。从 https://sdkman.io/install 安装 SDKMAN
列出可用的 Java 版本以确保您知道版本 ID
或java 18:
或者为当前终端会话切换到 17:
当您使用 list 命令列出可供安装的版本时,您将看到各种各样的 Java 发行版:
并安装其他版本,例如来自 Amazon 的 JDK 11:
SDKMAN 可以使用以前安装的现有版本。只需进行本地安装,提供您自己的版本标签和 JDK 的位置:
并自由使用:
当您更改版本时,SDKMAN 会自动为您管理
PATH
和JAVA_HOME
。作为说明,它将Java版本安装到~/.sdkman/candidates/java/
。SDKMAN 使用指南 以及它可以安装和管理 的其他 SDK 中提供了更多信息。
使用“ asdf ”安装和切换版本
asdf 是一个版本管理器,支持安装和管理大多数语言、框架和开发人员/devops 工具。它具有特定于语言的插件,包括一个 用于 Java 的 插件。
并 阅读文档 以正确设置您的 shell,但如果您使用 Homebrew 中的 asdf 和 ZSH,您可以执行以下命令来完成设置:
并在继续之前 阅读正确设置 shell 的文档。基本上它说将以下内容添加到您的
~/.zshrc
文件中(假设您没有使用另一个 shell):或安装最新的:
其他重要的命令是…
就这么容易! asdf 将在您更改版本时自动为您管理 PATH 和 JAVA_HOME。作为说明, asdf 将 Java 版本安装到
~/.asdf/installs/java
。来自存储库页面的 asdf 有其他语言和插件: https ://github.com/asdf-vm/asdf-plugins
其他安装方法
使用 Homebrew 安装
2018 年 10 月 3 日之前 Homebrew Cask 中可用的 Java 版本确实是 Oracle JVM。但是,现在它已更新为 OpenJDK。请务必更新 Homebrew,然后您将看到可安装的最新版本。
这些木桶经常更改它们的 Java 版本,并且可能还有其他带有其他 Java 版本的水龙头。
或者对于 Eclipse Temurin 版本:
或者对于 Temurin 版本:
java11
,temurin8
,temurin11
,temurin17
, or justjava
或temurin
该发行版的最新版本。例如:这些将被安装到
/Library/Java/JavaVirtualMachines/
这是 Mac OSX 上预期的传统位置。在安装过程结束时可能会报告其他步骤以使 JDK 处于活动状态。从 OpenJDK 下载页面手动安装:
如果您需要任何 Java 版本,这是一个很好的地方。
从 http://jdk.java.net/ 下载适用于 Mac OSX 的 OpenJDK(例如 Java 17 和 Java 18 )
解压缩 OpenJDK tar,并将生成的文件夹(即
jdk-17.jdk
)放入/Library/Java/JavaVirtualMachines/
文件夹,因为这是 JDK 安装的标准和预期位置。您也可以安装在现实中您想要的任何位置。将
JAVA_HOME
环境变量设置为指向您取消归档 JDK 的方向。有关详细信息,请参阅 特定于手动安装 的答案。另请参阅“手动切换版本”下方的部分,了解有关如何管理多个手动安装的更多信息。
其他安装选项:
OpenJDK 的其他一些风格是:
Azul Systems Java Zulu 认证的 OpenJDK 版本可以按照 其网站上的说明 进行安装。
Amazon Correto OpenJDK 构建有一个易于使用的安装包,适用于 Java 8、Java 11、Java 15、Java 16、Java 17 和 Java 18。它安装到 Mac OSX 上的标准
/Library/Java/JavaVirtualMachines/
目录。我的JDK在哪里?!?!
要查找安装在默认系统位置的以前安装的 Java JDK 的位置,请使用:
您还可以使用
-v
仅报告特定 Java 版本的位置。例如对于 Java 17:在使用 JEnv 之类的工具,或手动将本地安装添加到 SDKMAN,或在 Jabba 中链接系统 JDK 时,了解已安装 JDK 的位置也很有用——而且您需要知道在哪里可以找到它们。
如果您需要查找其他工具安装的 JDK,请检查以下位置:
~/.sdkman/candidates/java/
~/.asdf/installs/java
~/.jabba/jdk
版本切换
如果您使用的是 SDKMAN 或 asdf ,您已经被覆盖并且可以停止阅读!否则,这里有一些用于切换现有 VM 安装的选项。
手动切换版本
Java 可执行文件是一个包装器,它将使用
JAVA_HOME
中配置的任何 JDK,因此您可以更改它以更改正在使用的 JDK。例如,如果您将 JDK 16 安装或解压缩到
/Library/Java/JavaVirtualMachines/jdk-16.jdk
如果它是最高版本号,则它应该已经是默认值,否则您可以简单地设置:现在,路径中的任何 Java 可执行文件都将看到这一点并使用正确的 JDK。
更改 JDK 的一种简单方法 是在
~/.bashrc
或~/.zshrc
文件中创建一个函数:然后只需通过以下方式更改 JDK:
使用 JEnv 切换版本
JEnv 期望 Java JDK 已经存在于机器上并且可以在任何位置。通常,您会在
/Library/Java/JavaVirtualMachines/
中找到已安装的 Java JDK。 JEnv 允许设置 Java 的全局版本,一个用于当前 shell,以及每个目录的本地版本,这在某些项目需要与其他项目不同的版本时很方便。如果您还没有安装 JEnv,请参阅网站 http://www.jenv.be/ 上的说明以进行手动安装或使用 Homebrew。
将任何 Java 版本添加到 JEnv( _如果您将其放在其他位置,请调整目录_):
您还可以使用
jenv add
以类似方式添加其他现有版本,并列出可用的版本。例如 Java 8:有关更多命令,请参阅 JEnv 文档。您现在可以随时为整个系统、shell 或每个本地目录在任何 Java 版本(Oracle、OpenJDK 等)之间切换。
为了帮助管理
JAVA_HOME
在使用 JEnv 时,您可以添加 导出插件 来为您执行此操作。导出插件可能不会调整
JAVA_HOME
如果它已经设置,所以你可能需要在你的配置文件中清除这个变量,以便它可以由 JEnv 管理。您还可以使用
jenv exec <command> <parms...>
运行单个命令,其中JAVA_HOME
和PATH
为该命令正确设置,其中可能包括打开另一个 shell。使用 Jabba 安装和切换版本
Jabba 还负责安装和切换。 Jabba 还将安装的 JDK 放入其自己的目录树中,通常为
~/.jabba/jdk
。按照主页上的说明 安装 Jabba。
列出可用的 JDK
您还可以为版本名称设置别名,链接到已安装的现有 JDK,并找到有趣的 JDK 组合,例如 GraalVM、Adopt JDK、IBM JDK 等。完整的 使用指南 也可以在主页上找到。
当您更改版本时,Jabba 会自动为您管理
PATH
和JAVA_HOME
。