1

実行可能jarを呼び出すJavaアプリケーション(プリンシパル)があります。

Process p = Runtime.getRuntime().exec(java -jar C:\\PFC\\maestro.jar)
p.waitFor();

maestro.jarは、2つのスレッドを作成し、別の実行可能jar(プロセス変数は「b」)を呼び出すJavaアプリケーションです。それから私はこのように彼らを待ちます:

    b.destroy();  //kill other executable jar that is called
    manejadora.join();  //thread finished
    controlador.join();  //thread finished
    System.out.println("all finished");

maestro.jarは正しく実行され、実行するとEclipseで「終了」と表示されるため、問題はありません。

プリンシパルがmaestro.jarを実行しようとすると、正しく実行されますが、maestro.jarがすでに終了している場合、プリンシパルは「p.waitFor()」でmaestro.jarを待機し続けます。

理由がわかりません。

これについてオリエンテーションをお願いします。本当にありがとう!

4

2 に答える 2

3

これは、別のスレッドで消費していないものをプロセスがコンソールに出力している可能性があるためです。詳細については、次の記事を参照してください。

http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

apache exec ライブラリは、これらすべてを適切に処理します。そのライブラリを使用して、問題を解決してください。

http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

于 2012-04-10T11:52:26.417 に答える
0

問題が解決しました。

すべての「System.out.println();」を終了する必要がありました。文。

そのため、プログラムのアクティビティを確認するためにログを作成する必要がありました。

みんなありがとう:-)

于 2012-04-12T10:40:58.647 に答える