Managing Java versions on macOS
Install jEnv which will allow us to manage Java versions on global and local levels
brew install jenv
Now add jEnv to system PATH by updating configuration of macOS shell:
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc
Load updated terminal configuration:
source ~/.zshrc
Ensure proper integration with Maven:
jenv enable-plugin export
jenv enable-plugin maven
Install Java version(-s)
brew install java
Brew will install latest version of Java and add a symlink in /opt/homebrew/opt directory. For example, /opt/homebrew/opt/openjdk. There are other links inside of this directory which ultimately lead to the real folder where the installation is located:
/opt/homebrew/Cellar/openjdk/<javaversion>/libexec/openjdk.jdk/Contents/Home
So now we need to add all existing Java installations into jEnv by copying those paths and running the command jenv add <path>
jenv add /opt/homebrew/Cellar/openjdk/18.0.1/libexec/openjdk.jdk/Contents/Home
After that you can list available versions in jenv:
jenv versions
Here is how you can switch global and local Java versions.
Global version setup:
jenv global <version>
Directory (project) specific Java:
jenv local <version>
Java for current terminal window:
jenv shell <version>
And of course you can always check Java version in current context by
java -version