- PR -

java.lang.Threadを用いた処理について

投稿者投稿内容
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-05-23 11:46
環境変数とかの問題じゃないでしょうかね。

コード:

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Test {

public static void main(String[] args) throws Exception {
final Process p = Runtime.getRuntime().exec("java aaaa");

Thread t1 = new Thread() {
@Override
public void run() {
InputStream in = p.getErrorStream();
InputStreamReader r = new InputStreamReader(in);
int c;
try {
while ((c = r.read()) > -1) {
System.err.print((char) c);
}
} catch (IOException e) {
}
}
};

Thread t2 = new Thread() {
@Override
public void run() {
InputStream in = p.getInputStream();
InputStreamReader r = new InputStreamReader(in);
int c;
try {
while ((c = r.read()) > -1) {
System.out.print((char) c);
}
} catch (IOException e) {
}
}
};

t1.start();
t2.start();
t1.join();
t2.join();

System.out.println(p.waitFor());
}
}



処理は適当ですが、上記のようなコードで診断できませんか?


[ メッセージ編集済み 編集者: かつのり 編集日時 2008-05-23 11:46 ]
ビーンズ
常連さん
会議室デビュー日: 2007/10/02
投稿数: 20
投稿日時: 2008-05-28 14:09
かつのりさん、アドバイスありがとうございます。
また、回答遅くなりましたことをお詫び申し上げます。

 結論から言うと、私のPC環境のデフォルトコードページが
 英語になってしまっていたことが原因だとわかり、
 これを元に戻したら問題が解決できました。

 はじめのプロセスではコードページは日本語になっていたので正常、
 サブプロセスが呼ばれるとなぜか規定値の英語になり異常になっていたようです。

状況をうまく伝えられなかったので・・・自己解決となってしまいました。
多くの方々からアドバイスをいただき勉強になりました。
ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)