2016-09-18 9 views
0

この標準コードを使用して、アプリケーションからの出力をJTextAreaにキャプチャして表示します。エラーチェックは削除されました。正常に動作します。Javaから外部アプリケーションにデータを入力

Process proc = null; 
ProcessBuilder builder=null; 
builder = new ProcessBuilder("java","-jar", "test.jar");       
proc = builder.start(); 
Thread outputGobbler = new Thread(new StreamGobbler(proc.getInputStream(),  outputTextServer1)); 
outputGobbler.start(); 

これで、ユーザーはJTextFieldにコマンドを入力し、これをアプリに送り返すことができます。私はパイプ、System.outを使用して多くのバリアントを読んでリダイレクトしていますが、私が理解する限り、これらのメソッドはどれも行いません。アプリケーションの内容は変更できません。これはどうすればできますか? (これはできますか?)

ありがとうございます。文字列として

答えて

0

考えるuserコマンド:書き込みコマンド:)で

String userCommand = "java -jar test.jar"; 
String[] s = userCommand.split(" "); 
ProcessBuilder builder = builder = new ProcessBuilder(s); 

が、ユーザーの余分なスペースに関するbecareful

+0

申し訳ありませんが、私は非常によく質問を書いていません。私は、Javaで第2のアプリケーションを書くための助けを求めていました。このアプリケーションでは、ユーザーがJTextFieldのコマンドをアプリケーションテストの入力として入力します。 Test.jarは、ユーザーが単純なコマンドを入力できるコマンドラインアプリです。 – user3237316

+0

私の答えはまだ当てはまると思います。 test.jarに 'help me'のようなコマンドがあるとします。この場合、 'help me'は最初のアプリケーションの入力であり、JTextFieldに入力する必要があります。したがって、私の答えのuserCommandの値は "java -jar test.jar help me"になります。確かに 'java -jar test.jar'は定数部分であり、JTextFieldの値はuserCommandの動的部分です。私は明確に説明されることを願っています。 –

+0

ご協力ありがとうございます。もう1行のコードが必要です。私はbuilder.redirectOutput()を試した。および他の変種。 JTextFieldを送信すると、何も起こりません。 – user3237316

関連する問題