The location has changed from Java 6 (provided by Apple) to Java 7 and onwards (provided by Oracle). The best generic way to find this out is to run
This is the natively supported way to find out both the path to the default Java installation as well as all alternative ones present.
If you check out its help text (
java_home -h), you'll see that you can use this command to reliably start a Java program on OS X (
java_home --exec ...), with the ability to explicitly specify the desired Java version and architecture, or even request the user to install it if missing.
A more pedestrian approach, but one which will help you trace specifically which Java installation the command
java resolves into, goes like this:
if that gives you something like
/usr/bin/java, which is a symbolic link to the real location, run
ls -l `which java`
On my system, this outputs
/usr/bin/java -> /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/bin/java
and therefrom you can read the Java home directory;
usr/bin/java points to another symbolic link, recursively apply the same approach with
ls -l <whatever the /usr/bin/java symlink points to>
An important variation is the setup you get if you start by installing Apple's Java and later install Oracle's. In that case Step 2 above will give you
/usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Commands/java
and that particular
java binary is a stub which will resolve the actual
java command to call by consulting the
JAVA_HOME environment variable and, if it's not set or doesn't point to a Java home directory, will fall back to calling
java_home. It is important to have this in mind when debugging your setup.
~ Answered on 2013-08-09 10:39:53