

On my machine I have the following version of Java. The command will print out something like the following depending on the available JDK in your computer.

First you need to run /usr/libexec/java_home -V command to get the list of installed JDK. It is important to have this in mind when debugging your setup.In this post you will learn how to set the default JAVA_HOME in Mac OS X when you have more than one JDK installed in your computer. In that case Step 2 above will give you /usr/bin/java -> /System/Library/Frameworks/amework/Commands/javaĪnd 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. 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).
