Preconditions
Step 1: Instal JDK(s)
Search for available JDKs
brew search --formulae openjdk.java
install a required version, e.g.
brew install openjdk@8
brew install openjdk@11
Step 2: Make JDK searchable
For the system, Java wrappers to find this JDK, symlink it with. Instead of openjdk@8
use your version.
sudo ln -sfn /usr/local/opt/openjdk@8/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-8.jdk
Step 3: Add Java paths to environment variables
Add to the end of your file which is used to be running by default when the shell session is started. E.g. to the ~/.bashrc
or ~/.zshrc
# Defining Java home
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_17_HOME=$(/usr/libexec/java_home -v17)
alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
alias java17='export JAVA_HOME=$JAVA_17_HOME'
#default java17
export JAVA_HOME=$JAVA_17_HOME
Step 4: Conclusion and example of usage
Now by default, you will have Java 17 available
java --version
openjdk 17.0.8 2023-07-18
OpenJDK Runtime Environment Homebrew (build 17.0.8+0)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.8+0, mixed mode, sharing)
and to switch to other versions, you can simply call java8
or java11
java11
java --version
openjdk 11.0.20 2023-07-18
OpenJDK Runtime Environment Homebrew (build 11.0.20+0)
OpenJDK 64-Bit Server VM Homebrew (build 11.0.20+0, mixed mode)
Links