Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Switching Java Versions on MacOS [Snippets]

DZone's Guide to

Switching Java Versions on MacOS [Snippets]

Unsure of how to switch between multiple versions of Java on your Mac? Check out this quick tip to help you navigate those waters.

· Java Zone ·
Free Resource

Get the Edge with a Professional Java IDE. 30-day free trial.

The Java JDK installed on MacOS has some interesting platform specific utilities, like...

/usr/libexec/java_home


...which tells you which Java version you’re currently using and where it’s installed. I have Java 9 currently installed and it tells me:

/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home


If you have multiple versions installed, adding -V will list all the versions and where they’re installed:

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    9, x86_64: "Java SE 9" /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
    1.8.0_101, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home


The next logical question from here would be, "How do I switch versions?" If you set your $PATH in a .profile or similar approach, you can eval java_home to add the current version to your path, but a neat trick discussed in one of the answers here (thanks to this SO user for this tip) uses the -v option to allow you to switch versions. Add a couple of aliases to your .profile like this...

alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version"
alias j7="export JAVA_HOME=`/usr/libexec/java_home -v 1.7`; java -version"


…and you’ve got a quick shortcut to switching between different versions.

Get the Java IDE that understands code & makes developing enjoyable. Level up your code with IntelliJ IDEA. Download the free trial.

Topics:
jdk ,java ,shortcut ,macos

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}