如何解决如何在允许版本切换的 Mac OSX 上安装 Java?
这些解决方案适用于各种 Java 版本,包括 Java 8 到 Java 17(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!
对于如何进行安装以及管理 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 还将安装的 JDK
放入其自己的目录树中,通常为~/.sdkman/candidates/java
. sdkman 允许设置全局默认版本和特定于当前 shell 的版本。
-
列出可用的 Java 版本以确保您知道版本 ID
sdk list java
-
安装其中一个版本,例如 Java 17:
sdk install java 17-open
-
将 Java 17 设为默认版本:
sdk default java 17-open
或者为当前终端会话切换到 17:
sdk use java 17-open
当您使用 list 命令列出可供安装的版本时,您将看到各种各样的 Java 发行版:
sdk list java
并安装其他版本,例如来自 Amazon 的 JDK 11:
sdk install java 11.0.10.9.1-amzn
sdkman 可以使用以前安装的现有版本。只需进行本地安装,提供您自己的版本标签和 JDK 的位置:
sdk install java my-local-13 /Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home
并自由使用:
sdk use java my-local-13
当您更改版本时, sdkman 将自动管理您的PATH
和JAVA_HOME
为您服务。请注意,它将 Java
版本安装到~/.sdkman/candidates/java/
.
SDKMAN 使用指南以及它可以安装和管理的其他 SDK中提供了更多信息。
使用“ asdf ”安装和切换版本
asdf是一个版本管理器,支持安装和管理大多数语言、框架和开发人员/devops 工具。它具有特定于语言的插件,包括一个用于 Java 的插件。
- 首先,通过https://asdf-vm.com/guide/getting-started.html安装 asdf (阅读此处以正确设置您的 shell),或者更简单:
brew reinstall asdf
并阅读文档以正确设置您的 shell,但如果您使用Homebrew中的 asdf和 ZSH,您可以执行以下命令来完成设置:
echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
-
然后通过https://github.com/halcyon/asdf-java安装 Java 插件
asdf plugin add java
并在继续之前阅读正确设置 shell的文档。基本上它说将以下内容添加到您的~/.zshrc
文件中(假设您没有使用另一个外壳):
. ~/.asdf/plugins/java/set-java-home.zsh
-
现在列出 Java 版本:
asdf list-all java
-
安装您喜欢的风味和版本:
asdf install java openjdk-17
或安装最新的:
asdf install java latest
其他重要的命令是…
-
列出您安装的版本:
asdf list java
-
设置全局 Java 版本:
asdf global java openjdk-17
-
为目录设置本地 Java 版本:
asdf local java openjdk-17
就这么容易! 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,然后您将看到可安装的最新版本。
-
如果您还没有安装 Homebrew 。确保它已更新:
brew update
-
添加木桶水龙头:
brew tap homebrew/cask-versions
这些木桶经常更改它们的 Java 版本,并且可能还有其他带有其他 Java 版本的水龙头。
- 寻找可安装的版本:
brew search java
或者对于 Eclipse Temurin 版本:
brew search temurin
- 检查将安装的版本的详细信息:
brew info java
或者对于 Temurin 版本:
brew info temurin
-
安装特定版本的 JDK,例如
java11
、temurin8
、temurin11
或仅安装该发行版java
的temurin
最新版本。例如:brew install java
brew install –cask temurin
这些将安装/Library/Java/JavaVirtualMachines/
在 Mac OSX
上预期的传统位置。在安装过程结束时可能会报告其他步骤以使 JDK 处于活动状态。
从 OpenJDK 下载页面手动安装:
如果您需要任何 Java 版本,这是一个很好的地方。
-
从http://jdk.java.net/下载适用于 Mac OSX 的 OpenJDK (例如Java 17)
-
解压缩 OpenJDK tar,并将生成的文件夹(即
jdk-17.jdk
)放入您的/Library/Java/JavaVirtualMachines/
文件夹,因为这是 JDK 安装的标准和预期位置。您也可以安装在现实中您想要的任何位置。 -
将
JAVA_HOME
环境变量设置为指向您取消归档 JDK 的方向。
有关详细信息,请参阅特定于手动安装的答案。另请参阅“手动切换版本”下方的部分,了解有关如何管理多个手动安装的更多信息。
其他安装选项:
OpenJDK 的其他一些风格是:
认证的 OpenJDK 版本可以按照其网站上的说明进行安装。
Zulu® 是经过认证的 OpenJDK 版本,完全符合 Java SE 标准。Zulu 是 100% 开源且可免费下载的。现在,Java 开发人员、系统管理员和最终用户可以享受开源 Java 的全部优势,并具有部署灵活性和对升级时间的控制。
OpenJDK 构建有一个易于使用的 Java
8、Java 11、Java 15、Java 16 和 Java 17
安装包。它安装到/Library/Java/JavaVirtualMachines/
Mac OSX 上的标准目录。
Amazon Corretto 是开放式 Java 开发工具包 (OpenJDK) 的免费、多平台、生产就绪发行版。Corretto 提供长期支持,包括性能增强和安全修复。亚马逊内部在数千个生产服务上运行 Corretto,并且 Corretto 被认证为与 Java SE 标准兼容。使用 Corretto,您可以在流行的操作系统(包括 Linux、Windows 和 macOS)上开发和运行 Java 应用程序。
我的JDK在哪里?!?!
要查找安装在默认系统位置的以前安装的 Java JDK 的位置,请使用:
/usr/libexec/java_home -V
匹配 Java 虚拟机 (10): 17 (x86_64) “Homebrew” - “OpenJDK 17” /usr/local/Cellar/openjdk/17/libexec/openjdk.jdk/Contents/Home 11, x86_64: “Java SE 11” / Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home 1.8.301.09 (x86_64) “Oracle Corporation” - “Java” /Library/Internet Plug- Ins/JavaAppletPlugin.plugin/Contents/Home /usr/local/Cellar /openjdk/17/libexec/openjdk.jdk/Contents/Home
您还可以使用 仅报告特定 Java 版本的位置-v
。例如对于 Java 17:
/usr/libexec/java_home -v 17
/usr/local/Cellar/openjdk/17/libexec/openjdk.jdk/Contents/Home
在使用 JEnv 之类的工具,或手动将本地安装添加到 sdkman,或在 Jabba 中链接系统 JDK 时,了解已安装 JDK 的位置也很有用——而且您需要知道在哪里可以找到它们。
如果您需要查找其他工具安装的 JDK,请检查以下位置:
版本切换
如果您使用的是 sdkman 或 asdf ,您已经被覆盖并且可以停止阅读!否则,这里有一些用于切换现有 VM 安装的选项。
手动切换版本
Java 可执行文件是一个包装器,它将使用中配置的任何 JDK JAVA_HOME
,因此您可以更改它以更改正在使用的 JDK。
例如,如果您安装或解压 JDK
16,/Library/Java/JavaVirtualMachines/jdk-16.jdk
如果它是最高版本号,它应该已经是默认值,如果不是,您可以简单地设置:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home
现在,路径中的任何 Java 可执行文件都将看到这一点并使用正确的 JDK。
更改 JDK的一种简单方法是在您的~/.bashrc
or~/.zshrc
文件中创建一个函数:
jdk() {
version=$1
export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
java -version
}
然后只需通过以下方式更改 JDK:
jdk 1.8
jdk 9
jdk 11
jdk 13
使用 JEnv 切换版本
期望 Java JDK
已经存在于机器上并且可以在任何位置。通常,您会在/Library/Java/JavaVirtualMachines/
. JEnv 允许设置 Java
的全局版本,一个用于当前 shell,以及每个目录的本地版本,这在某些项目需要与其他项目不同的版本时很方便。
-
如果您还没有安装 JEnv,请参阅网站http://www.jenv.be/上的说明以进行手动安装或使用 Homebrew。
-
将任何 Java 版本添加到 JEnv( 如果您将其放在其他位置,请调整目录 ):
jenv add /usr/local/Cellar/openjdk/17/libexec/openjdk.jdk/Contents/Home
-
使用以下命令设置您的全局版本:
jenv global 17
您还可以使用jenv add
类似的方式添加其他现有版本,并列出可用的版本。例如 Java 8:
jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
jenv versions
有关更多命令,请参阅JEnv 文档。您现在可以随时为整个系统、shell 或每个本地目录在任何 Java 版本(Oracle、OpenJDK 等)之间切换。
JAVA_HOME
为了在使用 JEnv
时帮助管理,您可以添加导出插件来为您执行此操作。
$ jenv enable-plugin export
You may restart your session to activate jenv export plugin echo export plugin activated
如果已设置导出插件,则可能无法调整JAVA_HOME
,因此您可能需要在配置文件中清除此变量,以便它可以由 JEnv 管理。
您还可以使用jenv exec <command>
<parms...>
运行单个命令JAVA_HOME
并PATH
为该命令正确设置,这可能包括打开另一个 shell。
使用 Jabba 安装和切换版本
还负责安装和切换。Jabba 还将安装的 JDK
放入它自己的目录树中,通常是~/.jabba/jdk
.
-
按照主页上的说明安装 Jabba 。
-
列出可用的 JDK
jabba ls-remote
-
安装 Java JDK 12
jabba install openjdk@1.12.0
-
用它:
jabba use openjdk@1.12.0
您还可以为版本名称设置别名,链接到已安装的现有 JDK,并找到有趣的 JDK 组合,例如 GraalVM、Adopt JDK、IBM JDK 等。完整的使用指南也可以在主页上找到。
当您更改版本时, Jabba 将自动管理您的PATH
和JAVA_HOME
为您服务。
解决方法
我想在 Mac OSX 上安装 OpenJDK Java 并让它与其他 JDK 一起工作,因为它是一个较新的版本。目前,我下载了 tar.gz
并将其放在我的路径中,但这很难维护。
我发现的唯一其他自动执行更多操作的安装是通过 Homebrew cask 安装。它看起来也只有当前版本:
brew cask info java
显示:
java: 13,33:5b8a42f3905b406298b72d750b6919f6
https://openjdk.java.net/
所以我可以从那里安装它,但是然后呢?我只坚持新版本吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。