- PR -

テキストエリアへのエラー文の出力

投稿者投稿内容
ノリ
常連さん
会議室デビュー日: 2004/09/24
投稿数: 32
投稿日時: 2004-11-08 16:57
GUIプログラムでプログラムのコンパイルと実行をするプログラムを作っているんですがコンパイルしたときのエラー文をテキストエリアへ書き出すことができません!
仕様はテキストフィールドに”javac 〜.java”と入力して”CC”ボタンを押すとコンパイルするというものです。
コンパイルには"Runtime#exec()"を使用しています。
何か良い方法を教えてもらえないでしょうか?
宜しくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-11-08 17:52
・コンパイラのエラー出力を取得する方法(もうすこしかみ砕くと Runtime#exec() で起動したプロセスの出力を取得する方法)
・文字列をテキストエリアに表示する方法
どちらがわかりませんか?(おそらく前者だと思いますが)
ノリ
常連さん
会議室デビュー日: 2004/09/24
投稿数: 32
投稿日時: 2004-11-08 19:48
レスありがとうございます。
そうです。
後者はsetText(〜)で大丈夫ですよね。
宜しくお願いします。
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2004-11-08 20:35
ノリさん、こんにちは。

1. テキストエリアに出力する PrintStreamを実装する。
2. System.setErr(), System.setOut()で出力先をリダイレクトする。

で良いです。
takamaro
大ベテラン
会議室デビュー日: 2004/10/12
投稿数: 100
投稿日時: 2004-11-08 20:45
標準出力(System.out)、標準入力(System.in)、標準エラー出力(System.err
コンパイルエラーや実行時エラー)全て、インギさんが示された「プロセス」によって
取得できます。
java.lang.Runtime#exec()の戻り値はjava.lang.Processクラスのインスタンスです。
このクラスのget**Stream()から得られるストリームが上記3つの入出力ストリームに
対応しています。
後は、通常のストリームでの読・書きと同様の処理を行うだけだと思います。
ついでですが、Runtime.exec()を用いたコンパイルは新たなプロセスを起動しての
実行になりますが、他にも同一プロセスでコンパイルする方法もありますよ。
暇があったら他の方法も探ってみると宜しいかと思います。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-11-08 23:12
J2SE 5.0 Tiger 虎の穴 ProcessBuilder
http://www5.airnet.ne.jp/sakuraba/java/laboratory/J2SE1.5/TinyTips/ProcessBuilder/ProcessBuilder.html
その他、カレントDirとかも。

[ メッセージ編集済み 編集者: MMX 編集日時 2004-11-08 23:13 ]
ノリ
常連さん
会議室デビュー日: 2004/09/24
投稿数: 32
投稿日時: 2004-11-09 17:43
このように作ってみたのですがどうしてもテキストエリアに表示できません。
どこが悪いのでしょうか?
良かったらご指摘お願いします。

JTextArea textArea;
try {
Process process = Runtime.getRuntime().exec("javac Project.java");
InputStream is = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = br.readLine()) != null) {
textArea.setText(line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
長くなってすいません。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-11-09 17:48
合わせ技で全部丸投げをしないで
・テキストを取得できているのか
・setText は適切に働いているのか
といった切りわけをしましょう。
たとえば setText() のかわりに System.out.println() を使ったらどうなりますか????

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