
If usr/bin/java points to another symbolic link, recursively apply the same approach with ls -l Īn important variation is the setup you get if you start by installing Apple's Java and later install Oracle's. On my system, this outputs /usr/bin/java -> /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/bin/javaĪnd therefrom you can read the Java home directory If that gives you something like /usr/bin/java, which is a symbolic link to the real location, run ls -l `which java` ), with the ability to explicitly specify the desired Java version and architecture, or even request the user to install it if missing.Ī more pedestrian approach, but one which will help you trace specifically which Java installation the command java resolves into, goes like this: 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.

This is the natively supported way to find out both the path to the default Java installation as well as all alternative ones present. The best generic way to find this out is to run /usr/libexec/java_home

The location has changed from Java 6 (provided by Apple) to Java 7 and onwards (provided by Oracle).
