2017-02-23 5 views
0

ProcessBuilderを使用して "java -jar someJar.jar -argument"コマンドの出力をキャプチャするプロジェクトがありますが、jarのソースファイルを別のパッケージに移動しました。 somepackage。パッケージには主な機能があるので、別のスレッドと同じように、そのプロセスの出力をキャプチャするProcessBuilderを作成したいと思います。ProcessBuilderを使用して別のパッケージの出力を取得する

これは可能ですか、バイナリの代わりにソースファイルを使用できるようにコードを完全に書き直す必要がありますか?

+0

を指定するだけでなく、このリンクをお試しください。 "今、jarのソースファイルを別のパッケージに移動しました"とはどういう意味ですか?そして、なぜ「バイナリではなくソースファイルを実行する」という欲求が高まります(コンパイルせずに不可能です)。 – Holger

答えて

0

私は正しいと思いますが、パッケージには主な機能があり、java -jar processbuilderコマンドで実行されるmainメソッドの出力を取得しようとしています。

ProcessBuilder pb = new ProcessBuilder(your java -jar command);  
Process process = pb .start(); 
process.waitFor(); 
BufferedInputStream in = new BufferedInputStream(process.getInputStream()); 
byte[] contents = new byte[1024]; 
int jwtOytputBytesRead = 0; 
String Output = ""; 
while ((jwtOytputBytesRead = in.read(contents)) != -1) { 
      Output += new String(contents, 0, jwtOytputBytesRead); 
    } 
System.out.println(Output); 

あなたは紛らわしい方法で用語を混合しているメインクラス Run class in Jar file

+0

はい、それは私がやろうとしていることですが、常にスレッドから出力を得る必要があるため、スレッド化する必要があります。 –

+0

については、 javaで呼び出し可能です。例:public class ProcessBuilderProcessorはCallableを実装します {}次にexecutorを使用します\t \t ProcessBuilderProcessor pbp =新しいProcessBuilderProcessor( ""); \t \t ExecutorService executr = Executors.newFixedThreadPool(1); \t \t future future1 = executr.submit(pbp); – HaroonIsmailbasha

関連する問題