In this tutorial, I am going to share with you how to set the JAVA_HOME environment variable on a new macOS. The new way of setting JAVA_HOME environment variable allows us to dynamically identify and use the current Java version installed on a computer as well as let us switch between Java versions if there is more than one installed.
Starting from macOS 10.5 there is a very convenient command that we can use to identify the installed Java version. For example, open the terminal window on your Mac and type the following command to print out the top Java version installed on your Mac
/usr/libexec/java_home
If you have more than one version installed and you want to see all of the versions available, then run the following command in the terminal window.
/usr/libexec/java_home -V
To print the current Java version installed, simply use
java -version
Set JAVA_HOME Environment Variable
To set the JAVA_HOME environment variable for a current user you will need to update the ~/.profile file. I will use the vi text editor on Mac but you can use the text editor of your choice.
- Open the terminal windows and type:
sudo vi ~/.profile
This will open the .profile file for editing.
- Add the following line
export JAVA_HOME=$(/usr/libexec/java_home)
The /usr/libexec/java_home will return the current version of Java installed on the Mac computer.
- Save the file by tapping on ESC button on the keyboard and then :wq. This will save the file and will quite.
- In the terminal window type
source ~/.profile
to apply changes to the .profile file right away.
- In the terminal window type
java -verion
This will print out the current Java version installed on your Mac computer.
Switch Between Java Versions
If you have more than one Java version installed on your computer and you need to switch to using a different version, you can do so by adding the -v <Java Version> flag.
Let’s have a look at a short example.
To learn what Java versions I have installed on my Mac computer I will type the following in the terminal window:
/usr/libexec/java_home -V
this will return
Matching Java Virtual Machines (2): 13.0.1, x86_64: "Java SE 13.0.1" /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home 1.8.0_231, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
Which tells that there are two Java versions installed and the top version is “jdk-13.0.1.jdk“.
To set a specific Java version I will need to:
- In the terminal window type
sudo vi ~/.profile
To open the .profile file for editing.
- Add Java version I want to set. Like so:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
or if I wanted to set Java version 13, I would do it this way
export JAVA_HOME=$(/usr/libexec/java_home -v 13)
- Save the file by tapping on ESC button on your keyboard and then :wq. This will save the file and will quite.
- Apply changes by typing
source ~/.profile
Now if you check Java version by typing
java -version
It should print the current Java version set in JAVA_HOME.
I hope this tutorial was helpful to you.
Nice article. A very informative blog about java versions.
Hi, I found you tutorial extremely helpful however I made a mistake and have no experience with his kind of editing. I accidentally hit enter when trying to switch versions of java instead of esc :wq and now can’t delete the string of text “export JAVA_HOME=$(/usr/libexec/java_home- 1.8)” can you help me? Thank you.