- PR -

eclipseでjavaアプリを実行する際の標準出力先指定方法について

1
投稿者投稿内容
なお
常連さん
会議室デビュー日: 2004/02/17
投稿数: 29
投稿日時: 2004-07-09 23:39
いつもお世話になっております。

DOSコマンド上で、あるクラス(test.classとします。)を実行し、
自分で指定したファイル(test.logとします)に、標準出力させる際、
java test > test.log
とすると思います。

これをeclipse上で実行する場合、「> test.log」に当たる部分をどう指定すればいいか分かりません。
どなたかご教授いただけますでしょうか?
ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 2004-07-10 00:58
できないんじゃないかと思います。
「>」つまり、リダイレクトはシェル(cmd.exe や command.com)の機能ですから。

で、以前、eclipse じゃなくて、Ant で同じ問題 (cupってJavaで書かれた
ソフトをAntから呼び出すときに)にぶつかりました。
(補足:cupの場合、実は標準出力ではなくて標準入力のリダイレクトが必要になったのですが、解決方法は同じなので)
そのとき考えた解決策はつぎの2つです。

1.test クラスの標準出力をファイルに出力するためのラップクラスを用意して、
 eclipseから実行するときはそのラップクラスを実行する。

 メイン・クラス Wrapper
 プログラム引数 --stdout test.log test

2.test クラスを修正し、標準出力の代わりにファイルに出力する機能を付ける。
 testクラスの引数(コマンドラインオプション)で指定できるようにする。

 メイン・クラス test
 プログラム引数 --output test.log

で、実際には 1. をやりました。その後に cup 自体に 2. の機能が入ったので、
不要になりましたが。

(追加:cupに関する補足を追加)

[ メッセージ編集済み 編集者: ちいにぃ 編集日時 2004-07-10 12:52 ]
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2004-07-10 01:51
Antのjavaタスクにoutput属性を指定すると、出力を書き込むファイルの名前を指定できるそうです。
試してはいませんが。Antとjavaタスクについてはこちらをどうぞ。
http://www.jajakarta.org/ant/ant-1.5/docs/ant-1.5/j/docs/manual/index.html
http://www.jajakarta.org/ant/ant-1.5/docs/ant-1.5/j/docs/manual/CoreTasks/java.html

で、上記のjavaタスクを実行するbuild.xmlを書いて、Eclipseから実行すればいいんじゃないでしょうか。
なお、EclipseにはAntが付属してます。

[ メッセージ編集済み 編集者: koe 編集日時 2004-07-10 01:53 ]
yuzy
大ベテラン
会議室デビュー日: 2002/02/14
投稿数: 117
投稿日時: 2004-07-10 10:12
java.io.Systemクラスの setOut(PrintStream out) メソッドで
System.out を置き換えてしまうという方法はどうでしょうか?
なお
常連さん
会議室デビュー日: 2004/02/17
投稿数: 29
投稿日時: 2004-07-10 11:28
様々な方法を教えて頂き、ありがとうございます。
とりあえず、Antのjavaタスクを用いる方法で、やりたい事を実現できました。
(javaタスクのoutput属性を用いて、出力ファイルを指定しました。)

残り2通りの方法も、これから試させて頂こうと思います。
1

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