For the millionth time, cause I always forget...
Put this in ~/.bashrc:
export JAVA_HOME=/Library/Java/Home
[UPDATE: or this, which according to Mike Swingler, follows the Java version chosen in Java Preferences:
export JAVA_HOME=`/usr/libexec/java_home`
]
Also, run "sudo visudo" and add the line
Defaults env_keep += "JAVA_HOME"
or else commands like "sudo gem install" won't be able to find Java.
Without the above, I got the following error (which seemed to have been run through a baby-talk filter) when running "sudo gem install rjb":
extconf.rb:44: JAVA_HOME is not setted. (RuntimeError)

You just saved me a couple of hours, thanks for putting this up.
wow. that was incredibly useful! thanks so much for the great post.
Thanks! This helped tons!
You should use the /usr/libexec/java_home command, since it always follows the Java version choosen in Java Preferences.
Hello Alex,
I usually do these lines within my .bash_profile, to be able to quickly and smoothly switch between java versions on Mac. (This is really nice when wanting to test some code on multiple java versions). When I need to switch JDK, I simply use either of the aliases
useJdk15 useJdk16
The snippets for this in .bash_profile are:
...
Set roots for JDK version switching
export JAVA_HOME_ROOT=/System/Library/Frameworks/JavaVM.framework/Versions export JAVA_15_HOME=${JAVA_HOME_ROOT}/1.5/Home export JAVA_16_HOME=${JAVA_HOME_ROOT}/1.6/Home
...
Add JAVA_HOME to the path
JAVA_HOME=/Library/Java/Home
Augment the path
export PROTO_PATH=/Users/lj/Bin:${M2_HOME}/bin:/usr/local/bin:$PATH:/Users/lj/Bin:${GERONIMO_HOME}/bin:/Library/PostgreSQL/8.3/bin export PATH=${PROTO_PATH}:${JAVA_HOME}/bin
...
Manage JDK switching
function useJdk16() { # Assign JAVA_HOME export JAVA_HOME=${JAVA_16_HOME}
} function useJdk15() { # Assign JAVA_HOME export JAVA_HOME=${JAVA_15_HOME}
}
Define the standard JDK when working with the terminal.
useJdk16 ;