前回の Java for Mac OS X 10.5 Update 4 を使っている時の注意点に加えて、Mac OS X で NetBeans や Java を使う時の一般的な注意点をメモしておきます。今回は NetBeans などで使用する JDK を JDK6 に統一する、という方針で設定していってみます。これは NetBeans 6.7 で1つ重要な変更が入っていますのでそれに関係しています。
- JDK5 と JDK6 の切り替えは Java Preferences ユーティリティで
- NetBeans で使う JDK を設定するには
- 知らないうちに別々の JDK を使ってしまうことがある
書いてみますが、まだまだ Mac 使いとしては未熟な私ですので、おかしなところは遠慮なく指摘してください。
JDK5 と JDK6 の切り替えは Java Preferences ユーティリティで
どの JDK を使うかをユーザー単位で設定するにはアプリケーション>ユーティリティ>Java Preferences を使います。Java SE 6 を一番上に持って行きます。これで設定すればパスの一番最初に使いたい JDK の java が置かれるはずです。

ターミナルから
% java -version
java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03-211)
Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02-83, mixed mode)
%
で確認してみてください。Java アプリケーションで最初のパスに入っている java コマンドを使う場合にはこれで動くようになりますね。
NetBeans で使う JDK を設定するには
Mac OS X の NetBeans 6.7 では一つ重要な変更があります。気付いた方もいるかもしれませんね。6.7 ではインストーラを使ってインストールした場合にも netbeans.conf には JDK のパスを設定しないようになりました。NetBeans 6.5.1 までは JDK5 のパスが設定されていましたね。これは
バグ 159846 で議論されています。
インストール直後の netbeans.conf です。このように netbeans_jdkhome はコメントアウトされています。
# Default location of JDK, can be overridden by using --jdkhome <dir>:
#netbeans_jdkhome="/path/to/jdk"
このバグ修正によって NetBeans で使う JDK はデフォルトの JDK に追従することになりました。JDK6 を使いたい場合は Java Preferences で変更すればよいことになります。Java Preferences の設定と違う JDK を指定したい場合は netbeans.conf ファイルを編集して直接指定します。詳細は
ユーザーFAQ の「
NetBeans 起動時に JDK を指定できますか?」と「
起動パラメータを永続的に設定するにはどうしたらよいですか?」を参照してください。
netbeans_jdkhome="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"
NetBeans 6.5.1 までを使っているのであればここをコメントアウトすればいいですね。NetBeans でどの JDK が使われているか確認するにはメニューの「NetBeans」>「NetBeans について」で確認してください。
しかし、 Java Preferences で指定してもその JDK を使ってくれない場合があるようです。
知らないうちに別々の JDK を使ってしまうことがある
NetBeans は外部の Java アプリケーションを実行する時には、ほとんどの場合は JDK の場所を指定して(渡して)実行します。NetBeans が JDK6 を使っていれば、そこから起動されるものも同じ JDK6 を使うようにします。ただし、いくつかはそうでないものがあるようです。GlassFish V2 は独自に JDK の設定を持っていますね。実際 NetBeans インストーラでインストールした GlassFish V2 には JDK5 が <GlassFish V2>/config/asenv.conf に指定されています。
AS_JAVA="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home"
これにより NetBeans 6.7 では NetBeans と GlassFish で使う JDK が違うため、エンコーディングの不一致が起こり日本語が化けしてしまうことがあります。GlassFish は UTF-8 でログを出しているのに、NetBeans はそれを SJIS で読み込もうとしてしまうのですね。この場合は GlassFish の設定ファイル <GlassFish V2>/config/asenv.conf を編集して、JDK6 を使用するようにします。
AS_JAVA="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"
また環境変数 JAVA_HOME を見ているアプリケーションもあるようです。環境変数を設定するには
~/.MacOSX/environment.plist
というファイルを作りそこに記述します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>JAVA_HOME</key>
<string>/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home</string>
</dict>
</plist>
さて、これで Mac OS X で JDK6 を使うように変更できました。次回はちょっとやっかいなエンコーディングの問題について書いてみたいと思います。
関連するエントリ: