- - PR -
テキストエリアへのエラー文の出力
1|2|3
次のページへ»
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-11-08 16:57
GUIプログラムでプログラムのコンパイルと実行をするプログラムを作っているんですがコンパイルしたときのエラー文をテキストエリアへ書き出すことができません!
仕様はテキストフィールドに”javac 〜.java”と入力して”CC”ボタンを押すとコンパイルするというものです。 コンパイルには"Runtime#exec()"を使用しています。 何か良い方法を教えてもらえないでしょうか? 宜しくお願いします。 |
|
投稿日時: 2004-11-08 17:52
・コンパイラのエラー出力を取得する方法(もうすこしかみ砕くと Runtime#exec() で起動したプロセスの出力を取得する方法)
・文字列をテキストエリアに表示する方法 どちらがわかりませんか?(おそらく前者だと思いますが) |
|
投稿日時: 2004-11-08 19:48
レスありがとうございます。
そうです。 後者はsetText(〜)で大丈夫ですよね。 宜しくお願いします。 |
|
投稿日時: 2004-11-08 20:35
ノリさん、こんにちは。
1. テキストエリアに出力する PrintStreamを実装する。 2. System.setErr(), System.setOut()で出力先をリダイレクトする。 で良いです。 |
|
投稿日時: 2004-11-08 20:45
標準出力(System.out)、標準入力(System.in)、標準エラー出力(System.err
コンパイルエラーや実行時エラー)全て、インギさんが示された「プロセス」によって 取得できます。 java.lang.Runtime#exec()の戻り値はjava.lang.Processクラスのインスタンスです。 このクラスのget**Stream()から得られるストリームが上記3つの入出力ストリームに 対応しています。 後は、通常のストリームでの読・書きと同様の処理を行うだけだと思います。 ついでですが、Runtime.exec()を用いたコンパイルは新たなプロセスを起動しての 実行になりますが、他にも同一プロセスでコンパイルする方法もありますよ。 暇があったら他の方法も探ってみると宜しいかと思います。 |
|
投稿日時: 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-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(); } } 長くなってすいません。 |
|
投稿日時: 2004-11-09 17:48
合わせ技で全部丸投げをしないで
・テキストを取得できているのか ・setText は適切に働いているのか といった切りわけをしましょう。 たとえば setText() のかわりに System.out.println() を使ったらどうなりますか???? |
1|2|3
次のページへ»