注意:这些解决方案适用于各种版本的Java,包括Java 8到Java 17 (LTS版本)和Java 18。这包括来自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,和最新的Java 19!
对于如何进行安装以及管理JDK切换,您有几个选项。安装可以通过Homebrew、SDKMAN、asdf或手动安装完成。切换可以通过SDKMAN、asdf完成,也可以通过设置JAVA_HOME手动完成。所有这些都在下面描述。
TL;DR -首选安装方法
您可以使用您喜欢的任何方法安装Java,包括SDKMAN、asdf、Homebrew或手动安装tar.gz文件。手动安装的优点是JDK的位置可以放置在Mac OSX的标准化位置。
但是,还有一些更简单的选项,比如SDKMAN和asdf,它们也会为JVM安装其他重要的常用工具。这里描述了这两个主要选项。
使用SDKMAN安装和切换版本
SDKMAN有点不同,它同时处理安装和切换。SDKMAN还将安装的JDK放在自己的目录树中,通常是~/. SDKMAN /candidate /java。SDKMAN允许设置全局默认版本,以及特定于当前shell的版本。
从https://sdkman.io/install安装SDKMAN
列出可用的Java版本,以确保您知道版本ID
SDK列表
安装其中一个版本,例如Java 17 LTS:
SDK安装Java 17-open
或者java 19:
SDK安装Java 19-open
将Java 17设置为默认版本:
SDK默认Java 17-open
或者切换到当前终端会话的17:
SDK使用Java 17-open
当你使用list命令列出可供安装的可用版本时,你会看到各种各样的Java发行版:
sdk list java
并安装其他版本,例如亚马逊的JDK 11:
sdk install java 11.0.14.10.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/candidate / Java /。
更多信息可在SDKMAN使用指南以及其他SDK,如Gradle, Maven, Kotlin, Quarkus, Spring Boot,和许多其他可以安装和管理。
使用“asdf”安装和切换版本
Asdf是一个版本管理器,支持安装和管理大多数语言、框架和开发人员/devops工具。它有特定于语言的插件,包括一个Java插件。
First, install asdf via https://asdf-vm.com/guide/getting-started.html (read there to setup your shell correctly), or more simply:
brew reinstall asdf
and read the doc for setting up your shell correctly, but if you are using asdf from Homebrew with ZSH you can execute this command to finish setup:
echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
Then install the Java plugin via https://github.com/halcyon/asdf-java
asdf plugin add java
and read the doc for setting up your shell correctly before continuing. Basically it says to add the following to your ~/.zshrc file (assuming you are not using another shell):
. ~/.asdf/plugins/java/set-java-home.zsh
Now list Java versions:
asdf list-all java
Install your favorite flavor and version:
asdf install java openjdk-17
or install the latest:
asdf install java latest
其他重要的命令有……
列出您已安装的版本:
Asdf列表Java
设置Java全局版本:
Asdf全局Java openjdk-17
设置目录的本地Java版本:
Asdf本地Java openjdk-19
就是这么简单!当您更改版本时,asdf将自动为您管理PATH和JAVA_HOME。注意,asdf将Java版本安装到~/.asdf/ installing / Java。
asdf还有其他语言和插件,请访问存储库页面:https://github.com/asdf-vm/asdf-plugins
其他安装方法
使用Homebrew安装
在2018年10月3日之前,Homebrew Cask中可用的Java版本确实是Oracle JVM。但是,现在它已经更新为OpenJDK。请确保更新Homebrew,然后您将看到可供安装的最新版本。
install Homebrew if you haven't already. Make sure it is updated:
brew update
Add the casks tap:
brew tap homebrew/cask-versions
These casks change their Java versions often, and there might be other taps out there with additional Java versions.
Look for installable versions:
brew search java
or for Eclipse Temurin versions:
brew search temurin
Check the details on the version that will be installed:
brew info java
or for the Temurin version:
brew info temurin
Install a specific version of the JDK such as java11, temurin8, temurin11, temurin17, or just java or temurin for the most current of that distribution. For example:
brew install java
brew install --cask temurin
这些将被安装到/Library/Java/JavaVirtualMachines/,这是Mac OSX上的传统位置。在安装过程结束时,可能会有其他步骤使JDK处于活动状态。
从OpenJDK下载页面手动安装:
如果您需要任何版本的Java,这是一个很好的地方。
从http://jdk.java.net/下载OpenJDK for Mac OSX(例如Java 17和Java 19)
解压OpenJDK tar文件,并将生成的文件夹(即JDK -17. JDK)放到你的/Library/Java/JavaVirtualMachines/文件夹中,因为这是JDK安装的标准和预期位置。在现实中,你也可以安装在任何你想要的地方。
将JAVA_HOME环境变量设置为指向您解归档JDK的方向。
有关详细信息,请参阅特定于手动安装的答案。还请参阅下面的“手动切换版本”一节,了解有关如何管理多个手动安装的更多信息。
其他安装选项:
其他类型的OpenJDK有:
Azul Systems Java Zulu认证的OpenJDK版本可以按照他们网站上的说明安装。
Zulu®是OpenJDK的认证版本,完全符合Java SE标准。Zulu是100%开源的,可以免费下载。现在,Java开发人员、系统管理员和最终用户可以享受开源Java的全部好处,包括部署灵活性和对升级时间的控制。
Amazon Correto OpenJDK构建有一个易于使用的Java 8、11、15、16、17、18和Java 19的安装包。它安装在Mac OSX的标准/Library/Java/JavaVirtualMachines/目录下。
Amazon Corretto是开放Java开发工具包(OpenJDK)的一个免费、多平台、可用于生产的发行版。Corretto提供长期支持,包括性能增强和安全修复。Amazon内部在数千个生产服务上运行Corretto,并且Corretto被认证为与Java SE标准兼容。使用Corretto,您可以在流行的操作系统(包括Linux、Windows和macOS)上开发和运行Java应用程序。
Microsoft Java JDK——微软OpenJDK的认证版本。
我的JDK在哪里?
要找到以前安装的Java JDK安装在默认系统位置的位置,使用:
/usr/libexec/java_home -V
Matching Java Virtual Machines (4):
19 (x86_64) "Homebrew" - "OpenJDK 19" /usr/local/Cellar/openjdk/19/libexec/openjdk.jdk/Contents/Home
18.0.1.1 (x86_64) "Homebrew" - "OpenJDK 18.0.1.1" /usr/local/Cellar/openjdk/18.0.1.1/libexec/openjdk.jdk/Contents/Home
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
还可以使用-v仅报告特定Java版本的位置。例如,对于Java 17:
/usr/libexec/java_home -v 17
/ usr / local /地窖openjdk / 17 / libexec openjdk jdk /地点/ Home。
在使用JEnv等工具或手动向SDKMAN添加本地安装时,了解已安装JDK的位置也很有用——您需要知道在哪里可以找到它们。
如果你需要找到其他工具安装的JDK,检查这些位置:
SDKMAN安装到~/.sdkman/candidate /java/
Asdf安装到~/.asdf/ installing /java
版本切换
如果您正在使用SDKMAN或asdf,您已经覆盖了,可以停止阅读!否则,这里有一些选项可以切换现有的虚拟机安装。
手动切换版本
Java可执行文件是一个包装器,它将使用JAVA_HOME中配置的任何JDK,因此您可以更改它来更改正在使用的JDK。
例如,如果您将JDK 16安装或解压缩到/Library/Java/JavaVirtualMachines/ JDK -16。JDK如果它是最高版本号,它应该已经是默认版本号,如果不是,你可以简单地设置:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home
现在,无论路径中的Java可执行文件是什么,都将看到这个并使用正确的JDK。
更改jdk的一个简单方法是在~/中创建一个函数。Bashrc或~/。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
编辑:
删除了Jabba和JENV,因为两者似乎都停滞不前,问题数量急剧攀升,问题/PR没有得到维护者的解决。