3

私は自分のコンピューターを日本語でセットアップしました(ねえ、それは良い言語の練習です)、そしてすべてがうまくてダンディです...を除いてjavac。ローカライズされたエラーメッセージがコンソールに表示されますが、それらはUTF8ではなくShift-JISにあります。

$ javac this-file-doesnt-exist.java
javac: ?t?@?C??????????܂???: this-file-doesnt-exist.java
?g????: javac <options> <source files>
?g?p?\?ȃI?v?V?????̃??X?g?ɂ??ẮA-help ???g?p???܂

出力をパイプでnkf -wつなぐと、読み取り可能になりますが、それはあまり解決策ではありません。

$ javac this-file-doesnt-exist.java 2>&1 | nkf -w
javac: ファイルが見つかりません: this-file-doesnt-exist.java
使い方: javac <options> <source files>
使用可能なオプションのリストについては、-help を使用します

他のすべては、コマンドラインから(UTF8で)正常に機能します。私は日本語でファイル名を入力でき、タブ補完は正常に機能し、viはUTF-8ファイルを編集できます。javaそれ自体はすべてのメッセージを英語で吐き出しますが(これは問題ありません)。

これが私の環境の関連部分です:

LC_CTYPE=UTF-8
LANG=ja_JP.UTF-8

見た目からするとjavac、エンコーディングを適切にjava取得しておらず、言語をまったく取得していません。私も試し-Dfile.encoding=utf8ましたが、それは灘であり、JVMツールチェーンのローカリゼーションに関するドキュメントは、少なくともGoogleからはほとんど存在しません。

補遺:

MacportsOpenJDK6の動作は次のとおりです。

$ /opt/local//share/java/openjdk6_bootstrap/bin/javac this-file-doesnt-exist.java 
javac: file not found: this-file-doesnt-exist.java
Usage: javac <options> <source files>
use -help for a list of possible options
4

2 に答える 2

1

これは、日本の環境のOSXでよく知られているjavacの不具合です。私は自分でグーグル検索を少し行ったが、根本的な治療法は見つからなかった。今のところ、私が使用している一時的な解決策は

javac -J-Dfile.encoding=utf8

これは、UTF-8でエンコードされた日本語のエラーメッセージを表示します。-Dではないことに注意してください-J-D。英語のエラーメッセージが必要な場合は、

 LC_ALL=C javac -J-Dfile.encoding=utf8

必要に応じて、いつでもエイリアスにすることができます。

 alias javac="LC_ALL=C javac -J-Dfile.encoding=utf8"
于 2010-03-15T22:26:35.557 に答える
0

ターミナルでどの文字エンコードを有効にしましたか?javacが使用しているエンコーディングは許可されていないと思います。[設定]>[エンコーディング]を確認します。

于 2010-03-15T09:34:53.663 に答える