

It will simply be ignored by system's java command. That JDK can still be used when $JAVA_HOME points to it, or explicitly referenced in a script or configuration. To exclude a JDK from being picked by default, rename its Contents/ist to.The system will pick the highest version by default. leave all JDKs at their default location, under /Library/Java/JavaVirtualMachines.The following approach works with Java 7 to 12 at least (early access at the time of this writing), with Oracle JDK or OpenJDK (including builds by AdoptOpenJDK produced after mid-October 2018). I want to control system's default, and that should be latest stable. when I start my IDE) to use the latest "early access" version I have for now. Usually I have the latest stable one for general use, and others for tests. As far as I can tell, none of the current answers do that (*).Īs a developer, I use several JDKs, and I want to switch from one to the other easily.
APPLE JAVA VERSION HOW TO
This answer is an attempt to address: how to control java version system-wide (not just in currently running shell) when several versions of JDK are installed for development purposes on macOS El Capitan or newer (Sierra, High Sierra, Mojave). Press Y to save your changes source ~/.zshrc

zshrc file should work: nano ~/.zshrcĮxport JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)Īdd the export JAVA_HOME… line to your shell’s init file.įor Bash (as stated by antonyh): export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)įor Fish (as stated by ormurin) set -x JAVA_HOME (/usr/libexec/java_home -d64 -v1.8) Now when you run java -version you will see: java version "1.6.0_65" Or you can specify just the major version, like: export JAVA_HOME=`/usr/libexec/java_home -v 1.8` Pick the version you want to be the default ( 1.6.0_65-b14-462 for arguments sake) then: export JAVA_HOME=`/usr/libexec/java_home -v 1.6.0_65-b14-462` Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

First run /usr/libexec/java_home -V which will output something like the following: Matching Java Virtual Machines (3):ġ.8.0_05, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Homeġ.6.0_65-b14-462, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Homeġ.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
