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 macOS, let’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.