tags:

views:

3397

answers:

3

Many java applications that use shell scripts to configure their environment use the JAVA_HOME environment variable to start the correct version of java, locate JRE jars, etc.

On OSX 10.6, the following paths seem to be valid for this variable

/Library/Java/Home
/System/Library/Frameworks/JavaVM.framework/Home
/System/Library/Frameworks/JavaVM.framework/Versions/Current

Some of these are symlinks to the actual current VM (as defined in the Java Preference pane), but which one should be used - or is it OK to use any of them?

+2  A: 

I tend to use /Library/Java/Home. The way the preferences pane works this should be up to date with your preferred version.

Clint
+14  A: 

Does Snow Leopard still have /usr/libexec/java_home? On 10.5, I just set JAVA_HOME to the output of that command, which should give you the Java path specified in your Java preferences. Here's a snippet from my .bashrc file, which sets this variable:

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

I haven't experienced any problems with that technique.

(Occasionally I do have to change the value of JAVA_HOME to an earlier version of Java. For example, one program I'm maintaining requires 32-bit Java 5 on OS X, so when using that program, I set JAVA_HOME to /System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home.)

mipadi
Snow Leopard does still have /usr/libexec/java_home. Thanks
Robert Christie
A: 

Also, it`s interesting to set your PATH to reflect the JDK. After adding JAVA_HOME (which can be done with the example cited by 'mipadi'):

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

Add also in ~/.profile:

export PATH=${JAVA_HOME}/bin:$PATH

P.S.: For OSX, I generally use .profile in the HOME dir instead of .bashrc

lucasarruda