2012-04-02 4 views
1

イム、私は実行する必要があるコマンドは、このようなものです:パラメータプロセスとしてjarファイルを起動しようとしている「ProcessBuilder.command」の構文

「のjava -Xmx512M -jar -Xms512M myapp.jar引数」

そして、これはコードである私は現在持っている作業:

ProcessBuilder builder = new ProcessBuilder(); 
String[] command = {"java", "-jar", "myapp.jar"}; 
builder.command(command); 
Process process = builder.start(); 

OutputStream stdin = process.getOutputStream(); 
InputStream stdout = process.getInputStream(); 

BufferedReader reader = new BufferedReader(new InputStreamReader(stdout)); 
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin)); 

ReaderThread rt = new ReaderThread(reader); 
Thread handle = new Thread(rt, "ReaderThread"); 
handle.start(); 

しかし、私は「-Xmx1024M」のようなものを追加しようとした場合、私は追加しようとすると、私は「する最大のヒープエラー」またはになるだろう最後の文字列に "args"と表示されたら、 "jarfileにアクセスできません"というメッセージが表示されます。

システムコールのすべてのパラメタを正しい順序で追加する正しい構文は何ですか?

ありがとうございました。

EDIT:

私はまた、全体のコマンドを渡してみましたが、仕事をdidntのいくつかの理由があります。

答えて

1

プロセスのエラー入力ストリームを処理していないようです。

ここをクリックしてください:What to do when Runtime exec Won't問題を説明し、解決策を教えてください:ストリームゴブラーを使用してください。

+0

私はストリームを後で処理しますが、私が望む完全なコマンドを実行することはできません。 thx – josephfley

+0

@joseph:ストリームをどのように扱うかを示してください。 –

+0

オリジナルのポストを修正して、その部分をインクルードしました。完全なコードを投稿できますが、基本的にはスレッドが出力を読み込み、その部分がうまく動作しています。 – josephfley

0

プロセスの作業ディレクトリ(別名カレントディレクトリ)を設定してjarファイルを見つける必要があるかもしれません。または、クラスパスを-classpathで指定すると、そのjarが含まれます。

関連する問題