I just announced the new Spring 5 modules in REST With Spring:

>> CHECK OUT THE COURSE

1. Overview

In this quick article, we’ll take a look at how to set the JAVA_HOME variable on Windows, Mac OS X, and Linux.

2. Windows

2.1. Windows 10 and 8

  1. Open Search and type advanced system settings
  2. In the shown options, select the View advanced system settings link
  3. Under the Advanced tab, click Environment Variables
  4. In the System variables section, click New (or User variables for single user setting)
  5. Set JAVA_HOME as the Variable name and the path to the JDK installation as the Variable value and click OK
  6. Click OK and click Apply to apply the changes

2.2. Windows 7

  1. On the Desktop, right-click My Computer and select Properties
  2. Under the Advanced tab, click Environment Variables
  3. In the System variables section, click New (or User variables for single user setting)
  4. Set JAVA_HOME as the Variable name and the path to the JDK installation as the Variable value and click OK
  5. Click OK and click Apply to apply the changes

Open Command Prompt and check the value of the JAVA_HOME variable:

echo %JAVA_HOME%

The result should be the path to the JDK installation:

C:\Program Files\Java\jdk1.8.0_111

3. Mac OS X

3.1. Single User – Mac OS X 10.5 or Newer

From OS X 10.5, Apple introduced a command line tool (/usr/libexec/java_home) which dynamically finds the top Java version specified in Java Preferences for the current user.

Open ~/.bash_profile in any text editor and add:

export JAVA_HOME=$(/usr/libexec/java_home)

Save and close the file.

Open a Terminal and run the source command to apply the changes:

source ~/.bash_profile

Now we can check the value of the JAVA_HOME variable:

echo $JAVA_HOME

The result should be the path to the JDK installation:

/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

3.2. Single User – Mac OS X Older Versions

For older versions of OS X, we have to set the exact path to the JDK installation:

Open ~/.bash_profile in any editor and add:

export JAVA_HOME=/path/to/java_installation

Save and close the file.

Open a Terminal and run the source command to apply the changes:

source ~/.bash_profile

Now we can check the value of the JAVA_HOME variable:

echo $JAVA_HOME

The result should be the path to the JDK installation:

/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

3.3. Global Setting

To set JAVA_HOME globally for all users, the steps are the same as for single user, but the file /etc/profile is used.

4. Linux

4.1 Single User

To set JAVA_HOME in Linux for a single user, we can use /etc/profile or /etc/environment (preferred for system-wide setting) or ~/.bashrc (user specific setting).

Open ~/.bashrc in any text editor and add:

export JAVA_HOME=/path/to/java_installation

Save and close the file.

Run the source command to load the variable:

source ~/.bashrc

Now we can check the value of the JAVA_HOME variable:

echo $JAVA_HOME

The result should be the path to the JDK installation:

/usr/lib/jvm/java-8-oracle

4.2 Global Setting

To set JAVA_HOME in Linux for all users, we can use /etc/profile or /etc/environment (preferred).

Open /etc/environment in any text editor and add:

JAVA_HOME=/path/to/java_installation

Please note that /etc/environment is not a script, but a list of assignment expressions (that is why export is not used). This file is read at the time of login.

To set JAVA_HOME using /etc/profile, open the file and add:

export JAVA_HOME=/path/to/java_installation

Run the source command to load the variable:

source /etc/profile

Now we can check the value of the JAVA_HOME variable:

echo $JAVA_HOME

The result should be the path to the JDK installation:

/usr/lib/jvm/java-8-oracle

5. Conclusion

In this article, we have covered ways to set the JAVA_HOME environment variable on Windows, Mac OS X, and Linux.

I just announced the new Spring 5 modules in REST With Spring:

>> CHECK OUT THE LESSONS