asdf-java
Java plugin for the asdf version manager.
Requirements
Install
asdf plugin-add java https://github.com/halcyon/asdf-java.git
Use
Check asdf for instructions on how to install & manage versions of Java.
Install
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
Setting a version
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
Latest
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
JAVA_HOME
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 xonsh shell, instead use:
source ~/.asdf/plugins/java/set-java-home.xsh
macOS
JAVA_HOME
integration
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.
Apple Silicon 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
.