Java plugin for the asdf version manager.
asdf plugin-add java https://github.com/halcyon/asdf-java.git
Check asdf for instructions on how to install & manage versions of Java.
List candidate JDKs:
asdf list-all java
Install a candidate listed from the previous command like this:
asdf install java adoptopenjdk-11.0.16+8
Select an installed candidate for use like this:
asdf global java adoptopenjdk-11.0.16+8
or just for the local directory
asdf local java adoptopenjdk-11.0.16+8
If you just want the latest of a major version (without worrying about the patch number), install it like this:
asdf install java latest:adoptopenjdk-11
Similarly, you can set the global/local version. The latest tag will resolve to the most recent version.
Running asdf local java latest:adoptopenjdk-11
will result in the following:
$ cat .tool-versions
java adoptopenjdk-11.0.16+8
To set JAVA_HOME
in your shell's initialization add the following:
. ~/.asdf/plugins/java/set-java-home.bash
For zsh shell, instead use:
. ~/.asdf/plugins/java/set-java-home.zsh
For fish shell, instead use:
. ~/.asdf/plugins/java/set-java-home.fish
For nushell shell, instead use:
source ~/.asdf/plugins/java/set-java-home.nu
For xonsh shell, instead use:
source ~/.asdf/plugins/java/set-java-home.xsh
Some applications in macOS use /usr/libexec/java_home
to set java home.
Setting java_macos_integration_enable
to yes on .asdfrc
file enables this integration.
java_macos_integration_enable=yes
Note: Not all distributions of Java JDK packages offer this integration (e.g. liberica). This option only works for packages that do offer that integration.
If you have an Apple Silicon mac, then you can choose to run either an arm64
JVM natively, or an x86_64
JVM under Rosetta translation. If you run the command arch
, it will print either arm64
(which means you are running natively) or x86_64
(which means you are running under Rosetta translation).
When you run asdf list all java
, it lists only the VMs which are available for the architecture you are currently running under. To switch your terminal from native ARM to Rosetta use arch -x86_64 /bin/zsh
.