昔は Java Preferences で切り替えていた Java のバージョンですが、最近は java_home コマンドを使って JAVA_HOME 環境変数に設定するのが良い。
java_home コマンド
man ページをかいつまむと、
java_home コマンドは、JAVA_HOME 環境変数を設定するための適切なパスを返します。 Javaの環境設定アプリケーションでのユーザーの有効および優先のJVMからこのパスを決定し、ユーザーが rc ファイルに$JAVA_HOMEを設定したり、最小バージョンまたはアーキテクチャの要件を満たす適切なJVMを使用する方法を提供します。
JAVA_HOME 環境変数の指定
以下のように java_home コマンド の結果を export
export JAVA_HOME=`/usr/libexec/java_home`
バージョン指定したい場合は
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
java_home コマンドの使い方
"-V or --verbose" で JVM のリストが出力できる。
> /usr/libexec/java_home -V Matching Java Virtual Machines (3): 1.7.0_45, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home 1.6.0_65-b14-462, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
こんな感じ。
"-v or --version" にて JVMVersion をフィルタリングした JAVA_HOME のパスを返却。引数には "1.5+" や "1.6*" のような指定ができる。
> /usr/libexec/java_home -v 1.6 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
存在しないと
> /usr/libexec/java_home -v 1.5 Unable to find any JVMs matching version "1.5". /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
"-a or --arch" で "x86_64" などのアーキテクチャ指定できたり、"-d or --datamodel" で "-d32" と "-d64" のデータモデル指定できたり