1

これを使用して、Javaスイングアプリから外部プログラムを起動しようとしています:

Process proc = Runtime.getRuntime().exec(cmd);

しかし、Javaアプリを閉じるまで、外部プログラムが実際に起動されることはありません...毎回。閉じてから起動するのを待ちます。

私が実行しようとしている外部プログラムは、引数を取るexeです。

cmd = "externalProgram.exe -v --fullscreen --nowing";

ここで何が間違っている可能性があります。おもしろいことに、次のような簡単なことを試してみると、期待どおりに機能します。

Process proc = Runtime.getRuntime().exec("notepad.exe");
4

2 に答える 2

7

続行する前に、プロセスの標準出力から読み取るか、標準入力を閉じる必要がある場合があります。出力を読み取る場合、問題はバッファがいっぱいになり、プログラムがブロックされることです。入力を閉じる場合、問題は、一部のプログラムがそこからデータを読み取ろうとし、それが利用可能であればそれを待っていることです。これらのトリックのいずれかまたは両方で、問題が解決する可能性が非常に高くなります。

于 2011-04-10T01:39:37.833 に答える
2

エラー出力ストリームを読んで、プログラムが実際に実行に失敗していることを確認することもできます

String cmd = "svn.exe";
Process proc = Runtime.getRuntime().exec(cmd);
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
String line = null;
while((line=reader.readLine())!=null){
   System.out.println(line);
}
reader.close();

私のコンソールが表示されます

使用法については、「svn help」と入力してください。

これは明らかに、プログラムが Java によって実行されたことを示しています。

于 2011-04-10T01:46:49.670 に答える