How to Set $JAVA_HOME environment variable on Mac OS X

In this tutorial, we show you how to set $JAVA_HOME environment variable on latest or older Mac OSX.

1. Mac OSX 10.5 or later

In Mac OSX 10.5 or later, Apple recommends to set the $JAVA_HOME variable to /usr/libexec/java_home, just export $JAVA_HOME in file ~/. bash_profile or ~/.profile.

$ vim .bash_profile 
export JAVA_HOME=$(/usr/libexec/java_home)
$ source .bash_profile
$ echo $JAVA_HOME

Why /usr/libexec/java_home?
This java_home can return the Java version specified in Java Preferences for the current user. For examples,

/usr/libexec/java_home -V
Matching Java Virtual Machines (3):
    1.7.0_05, x86_64:	"Java SE 7"	/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home
    1.6.0_41-b02-445, x86_64:	"Java SE 6"	/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_41-b02-445, i386:	"Java SE 6"	/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

This Mac OSX has three JDK installed.

##return top Java version
$ /usr/libexec/java_home
## I want Java version 1.6
$ /usr/libexec/java_home -v 1.6

2. Older Mac OSX

For older Mac OSX, the /usr/libexec/java_home doesn’t exists, so, you should set JAVA_HOME to the fixed path :

$ vim .bash_profile 
export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
$ source .bash_profile
$ echo $JAVA_HOME


  1. Important Java Directories on Mac OS X
  2. What should I set JAVA_HOME to on OSX
Tags :

About the Author

Founder of and, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.


  • Pingback: Lab D0105a: InstalaciĆ³n de Openbravo en Mac OS X 10.9 | I'm a beginner()

  • D Mehta

    Very nice, helpful. Thanks.

  • Alonso

    Thanks a lot, you are the best man!

  • Nilesh

    Thanks a lot. Always find your site useful.

  • richard

    Hi colleagues, its enormous article about educationand entirely explained, keep it up
    all the time.

  • Joe

    Thanks a lot!