MacOSX上でQuick JUnitをお使いの皆様へ。日本語クラス名、メソッド名の対応方法

毎年4月25日はQuick JUnitにとって大切な日です。毎年β版をリリースし続けているのもあれなので、リリース版とするために懸案だったMacOSX上でテストメソッド名が日本語メソッド名だと起動しない問題に挑戦しました。調べてみると、その原因はQuick JUnitに原因があった訳ではありませんでした。そもそもMacOSXEclipse環境だと、日本語が通らないことって多くないですか?ということで、原因と対策についてつらつらとまとめます。自分がMacOSXを開発環境として使用し始めたのはここ数日なんで、詳しくはわかりません。ので、もし違っていることがあればコメントなりブコメをいただけるとありがたいです。

原因はMacOSX上のJavaのデフォルトエンコードにある模様

MacOSX上のJavaApple謹製のJDK,JREな訳ですが、デフォルトエンコードがJDK5の時はUTF-8だったのが、JDK6ではSJISに変更になったんですね。情報源はこちら
MacOSXに置けるターミナルのデフォルトエンコードUTF-8です。なので、JDK6のデフォルトエンコードSJISとはあわないので、起動できない、というのが問題の真相でした。なので、起動ランチャの設定タブの一番右にある「Common*1」タブには「Console Encoding」という選択欄があります。

ここの設定をUTF-8に設定すると、日本語クラス名でも、メソッド名でも起動できるはずです。これはソースコードのエンコーディングとは関係なくそう振る舞います。

Eclipseにおけるデフォルトエンコーディングの変更方法

若干Hackに見えると思いますが、大したことではないです。先述した情報源でも起動プロセスのシステムプロパティとして「file.encoding=UTF-8」を含むと書かれていますが、これをEclipseでも同様に設定してあげればいいです。ただ、MacOSXの場合、他のOSでは存在する、eclipse.iniが見当たりません。ではどこにあるかというと、まずEclipse.appを右クリックし、パッケージの内容を表示を選んでください。

次に「Contents/MacOS」を選択すると、その中にeclipse.iniが含まれています。このeclipse.iniの最後の行に「-Dfile.encoding=UTF-8」とすると日本語クラス名、メソッド名が通るようになるはずです。お試しください。

*1:Pleiadesユーザは適当に読み替えてください。多分「共通」