Java Top

I just announced the new Learn Spring course, focused on the fundamentals of Spring 5 and Spring Boot 2:

>> CHECK OUT THE COURSE

1. Introduction

In this quick post, we’ll learn how to find JAVA_HOME on Windows, Mac, and Linux.

As we all know, JAVA_HOME is an environment variable that we commonly use to locate java executables like java and javac.

2. Windows-Specific Ways to Find JAVA_HOME

If we’re using Windows as the operating system, first we need to open up our command line (cmd) and type:

echo %JAVA_HOME%

If JAVA_HOME is defined in our environment, then the above command will print it out.

Or, we could try:

where java

Which will show the location of the java executable.

3. macOS and Linux-Specific Ways to Find JAVA_HOME

If we’re using either macOS or Linux, we can open up our terminal and type:

echo $JAVA_HOME

If JAVA_HOME is defined in our environment, then the above command will print it out.

Or, we could try:

which java

Which probably just shows us /usr/bin/java.

But, really this isn’t very helpful since it’s a symbolic link. To unravel this, we’ll use dirname and readlink;

for Linux:

dirname $(dirname $(readlink -f $(which javac)))

and for macOS:

$(dirname $(readlink $(which javac)))/java_home

As a result, this command prints the currently used java folder.

4. Using Java to Find JAVA_HOME

And, if we’re able to run java ourselves, then we have a nearly platform-independent way, too:

java -XshowSettings:properties -version

Running this command outputs numerous properties, one of them being java.home.

To parse it, though, we’ll still need a platform-specific tool.

For Linux and macOSlet’s use grep:

java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home' 

And for Windows, let’s use findstr:

java -XshowSettings:properties -version 2>&1 | findstr "java.home"

5. Conclusion

With this quick post, we’ve learned how to find JAVA_HOME on different operating systems.

If they didn’t work, though, maybe we didn’t set JAVA_HOME variable properly while installing Java.

Java bottom

I just announced the new Learn Spring course, focused on the fundamentals of Spring 5 and Spring Boot 2:

>> CHECK OUT THE COURSE
newest oldest most voted
Notify of
Nils Breunese
Guest
Nils Breunese

On macOS you can use the included /usr/libexec/java_home tool to find Java installations.

I use this command in ~/.bash_profile to set JAVA_HOME to my JDK 8:

export JAVA_HOME=/usr/libexec/java_home -v 1.8

This tool supports a couple of other handy features related to Java home directories.

Nils Breunese
Guest
Nils Breunese

Hm, the comment rendering system on this site ate the backticks around the java_home command (the part after the = sign), but the need to be there in our the assign the output of the command to the JAVA_HOME variable.

Loredana Crusoveanu
Editor

Hi Nils,

That’s very interesting. Thanks for adding the info.

Comments are closed on this article!