とんちゃんといっしょ

Cloudに関する技術とか日常とかについて書いたり書かなかったり

MacのTerminalでjavacをした時にコンパイルエラーが文字化けするの出なおしてみた

Macのターミナルでjavacをすると、コンパイルエラーがあった時にエラーの内容が文字化けしているので読めない。

% javac TestSample.java                                                     [~/tmp]
TestSample.java:3: Sample ?? abstract ?ł??B?C???X?^???X?𐶐????邱?Ƃ͂ł??܂???B
  Sample sample  = new Sample();

とりあえず解決策をぐぐってみた

key-cc: MacOS Xでのjavacの文字化けを解消する方法


どうもエラー出力をするときにSJISが使われているらしいので、javacの実行時に"-J-Dfile.encoding=UTF8"オプションを追加してやることで解決するらしい。

% javac -J-Dfile.encoding=UTF8 TestSample.java   
TestSample.java:2: Sample は abstract です。インスタンスを生成することはできません。
  Sample sample  = new Sample();

でも毎回オプションを付けるのがめんどくさいので、.zshrcあたりにaliasを仕込んでおく。

  • ~/.zshrc
# MacのTerminal用に追加
alias javac='javac -J-Dfile.encoding=UTF8'

設定ファイルの再読み込み

% source ~/.zshrc

これでjavacコマンドだけでコンパイルエラー時の文字が確認できるようになった。

% javac TestSample.java   
TestSample.java:2: Sample は abstract です。インスタンスを生成することはできません。
  Sample sample  = new Sample();

Eclipse使えば問題ないんだろうけど一応メモとして残しておいてみた。