javacの文字化け

5,160 views
Skip to first unread message

横井朗

unread,
Aug 3, 2012, 7:04:31 AM8/3/12
to pla...@googlegroups.com
はじめまして。横井と申します。

最近Playframework(2.0.2)をはじめたのですが、
javac結果が下記のように文字化けしてしまっています。
※普通にjavacを打ったときの結果は文字化けしません。

Eclipseではコンパイルは通っており、原因が分からずに困っています。

> play debug start
Listening for transport dt_socket at address: 9999
[info] Loading project definition from C:\workspace\play\sample\project
[info] Set current project to sample (in build file:/C:/workspace/play/sample/)
[info] Compiling 6 Java sources to C:\workspace\play\sample\target\scala-2.9.1\classes...
[error] C:\workspace\play\sample\app\util\JsonUtil.java:38: ・ス^・スp・ス・ス・ス・ス・ス[・ス^ <T>T ・スサ別でゑソス・スワゑソス・ス・ス; ・ス^・スマ撰ソス T (・ス・ス・ス
T,java.lang.Object) ・スフ固有・スフ最托ソスC・ス・ス・スX・ス^・ス・ス・スX・ス・ス・ス・ス・スンゑソス・スワゑソス・ス・スB
[error]                 T result = mapper.readValue(jsonString, typeReference);
[error]                                            ^
[error] ・スG・ス・ス・ス[ 1 ・ス・ス
[error] {file:/C:/workspace/play/sample/}sample/compile:compile: javac returned nonzero exit code


エラーになっているのは下記のソースです。
public static <T> T fromJson( String jsonString, TypeReference<T> typeReference) throws JsonMappingException, JsonGenerationException,
        IOException {
    ObjectMapper mapper = new ObjectMapper();
    T result = mapper.readValue( jsonString, typeReference);
    return result;
}

文字化けの原因か、Eclipseでは通るソースがコンパイルエラーになる原因か、
ヒントでも良いので教えていただけるとありがたいです。

中村真人

unread,
Aug 3, 2012, 7:47:43 AM8/3/12
to pla...@googlegroups.com
中村@Masahito です。はじめまして

まず、ファイルの文字コードのチェックをお願いします。
たしか、Play!2.0系はplayコマンドを使う場合に、ファイルがUTF-8でないとビルドができないはずです。

他の可能性もありますので、OSなど環境面も教えてください。

p.s. 開発用に実行するならば"play run"の方がよいと思われます。"play start"系は本番(prod)モード用の実行です

横井朗

unread,
Aug 3, 2012, 10:51:21 PM8/3/12
to pla...@googlegroups.com
中村さん

横井です。返信ありがとうございます!

ファイルはUTF-8になっています。
環境はWindows7(32bit)、JDK 1.6.0_20です。

引き続きよろしくお願いします。

2012年8月3日金曜日 20時47分43秒 UTC+9 masahito:

Kitora, Naoki

unread,
Aug 4, 2012, 7:40:12 AM8/4/12
to pla...@googlegroups.com
横井さん

初めまして、木虎と申します。

> ファイルはUTF-8になっています。
> 環境はWindows7(32bit)、JDK 1.6.0_20です。

Windows 7 の環境が手元にないので確認できていないのですが、コマンドプロンプトの文字コードが Shift_JIS
なので化けていると言うことはないでしょうか?
ちょっと調べてみたところ以下のページにコマンドプロンプトの文字コードの変更方法が書かれていました。
http://www.drk7.jp/MT/archives/001461.html

コマンドプロンプトの文字コードを UTF-8 にすると Windows 標準のコマンドの出力は化けてしまうような気はします。

--
Kitora, Naoki <naoki....@gmail.com>
twitter: http://twitter.com/kitora_naoki

横井朗

unread,
Aug 5, 2012, 10:14:23 PM8/5/12
to pla...@googlegroups.com
木虎さん

回答ありがとうございます。
コマンドプロンプトの文字コードも試してみたのですが、
単純にjavacを実行すると文字化けなくヘルプが表示されます。
Playframeworkのjavacの結果だけが化けている状態です。

2012年8月4日土曜日 20時40分12秒 UTC+9 kitora.naoki:
Message has been deleted

Kitora, Naoki

unread,
Aug 5, 2012, 11:57:51 PM8/5/12
to pla...@googlegroups.com
横井さん

> コマンドプロンプトの文字コードも試してみたのですが、
> 単純にjavacを実行すると文字化けなくヘルプが表示されます。

これは普通そうなると思います。
javac コマンドが環境を見て Shift_JIS で出力していると思いますので。

> Playframeworkのjavacの結果だけが化けている状態です。

念の為確認ですが、コマンドプロンプトの文字コードを UTF-8 にしても Play framework の javac の結果は文字化けするという事でしょうか?

tomo cocoa

unread,
Aug 6, 2012, 1:38:17 AM8/6/12
to pla...@googlegroups.com
cocoatomo です.

横井さん

おそらくコマンドプロンプトの文字コードと Play が出すコンパイルメッセージの文字コードが合っていないのだと思います.

_JAVA_OPTIONS という環境変数を -Dfile.encoding=UTF-8 や -Dfile.encoding=SJIS
にしてみると, 表示が変わると思いますので試していただけますでしょうか?

参照: http://kumagonjp2.blog.fc2.com/blog-entry-48.html



2012/8/6 Kitora, Naoki <naoki....@gmail.com>:
> --
> このメールは Google グループのグループ「日本Playframeworkユーザー会」の登録者に送られています。
> このグループに投稿するには、pla...@googlegroups.com にメールを送信してください。
> このグループから退会するには、play_ja+u...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/play_ja?hl=ja からこのグループにアクセスしてください。
>



--
class Cocoatomo:
name = 'cocoatomo'
email_address = 'cocoa...@gmail.com'
twitter_id = '@cocoatomo'

横井朗

unread,
Aug 6, 2012, 2:07:41 AM8/6/12
to pla...@googlegroups.com
cocoatomoさん

回答ありがとうございます。
教えていただいたようにplayを起動しているコンソールで環境変数を設定したところ上手くいきました!
set _JAVA_OPTIONS="-Dfile.encoding=SJIS"

なぜSJIS指定で上手くいくのか釈然としないのですが・・・

状況をまとめておきます。
【前提】
・コマンドプロンプトの文字コードは932 日本語Shift-JIS、フォントはMSゴシック
・ソースコードの文字コードはUTF-8
【現象】
・コマンドプロンプトからjavacを直接実行すると正常にコンパイルエラーが表示される
 (ソースコードの文字コードはShift-JIS、UTF-8で確認したが共に問題なし)
・Playframeworkのjavacの結果は文字化けする
【対応】
①下記のURLを参考にコマンドプロンプトの文字コードをUTF-8に変更
 http://www.drk7.jp/MT/archives/001461.html
 →状況に変化なし。フォントの設定が上手くいっていないだけかも・・・

②下記の環境変数を設定
 set _JAVA_OPTIONS="-Dfile.encoding=SJIS"
 →解決!!

その他、回答頂いた皆様ありがとうございました!

2012年8月6日月曜日 14時38分17秒 UTC+9 cocoatomo:
cocoatomo です.

横井さん

おそらくコマンドプロンプトの文字コードと Play が出すコンパイルメッセージの文字コードが合っていないのだと思います.

_JAVA_OPTIONS という環境変数を -Dfile.encoding=UTF-8 や -Dfile.encoding=SJIS
にしてみると, 表示が変わると思いますので試していただけますでしょうか?

参照: http://kumagonjp2.blog.fc2.com/blog-entry-48.html



2012/8/6 Kitora, Naoki <naoki....@gmail.com>:
> 横井さん
>
>> コマンドプロンプトの文字コードも試してみたのですが、
>> 単純にjavacを実行すると文字化けなくヘルプが表示されます。
>
> これは普通そうなると思います。
> javac コマンドが環境を見て Shift_JIS で出力していると思いますので。
>
>> Playframeworkのjavacの結果だけが化けている状態です。
>
> 念の為確認ですが、コマンドプロンプトの文字コードを UTF-8 にしても Play framework の javac の結果は文字化けするという事でしょうか?
>
> --
> Kitora, Naoki <naoki....@gmail.com>
> twitter: http://twitter.com/kitora_naoki
>
> --
> このメールは Google グループのグループ「日本Playframeworkユーザー会」の登録者に送られています。
> このグループに投稿するには、play_ja@googlegroups.com にメールを送信してください。
> このグループから退会するには、play_ja+unsub...@googlegroups.com にメールを送信してください。

tomo cocoa

unread,
Aug 6, 2012, 2:18:01 AM8/6/12
to pla...@googlegroups.com
横井さん

上手く行って良かったです.

その設定をすると javac からの出力の文字コードが変更されます. (変数名からすると, 他のも変更されそうです)
おそらくコマンドプロンプトが Play のコンパイラが出力した UTF-8 バイト列を SJIS で出力しようとして,
化けてしまっていたのでしょう.

コマンドプロンプトから ssh で Linux などに入った場合, UTF-8 で出力されたログメッセージが化けてしまうのですが,
色々調べてみるとコマンドプロンプトが表示する瞬間に化けています.
強制的に Play のコンパイラに SJIS でメッセージを出させることで, 正常に表示されたのだと思います.

SJIS で出しているだけなので, 直接 javac を実行しても文字化けの問題は無いと思います.
一応確認してください.
問題無ければ, ユーザー環境変数やシステム環境変数に設定しておくのが楽かと思います.


お疲れ様でした :)

2012/8/6 横井朗 <yokoi....@gmail.com>:
>> > このグループに投稿するには、pla...@googlegroups.com にメールを送信してください。
>> > このグループから退会するには、play_ja+u...@googlegroups.com にメールを送信してください。
>> > 詳細については、http://groups.google.com/group/play_ja?hl=ja
>> > からこのグループにアクセスしてください。
>> >
>>
>>
>>
>> --
>> class Cocoatomo:
>> name = 'cocoatomo'
>> email_address = 'cocoa...@gmail.com'
>> twitter_id = '@cocoatomo'
>
> --
> このメールは Google グループのグループ「日本Playframeworkユーザー会」の登録者に送られています。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/play_ja/-/JlVyJxCmMWQJ
> にアクセスしてください。
>
> このグループに投稿するには、pla...@googlegroups.com にメールを送信してください。
> このグループから退会するには、play_ja+u...@googlegroups.com にメールを送信してください。
Reply all
Reply to author
Forward
0 new messages