2

Javaからシステムコマンドを実行しようとしたのはこれが初めてではありません。でも今回はとても大変でした。ターミナルから問題なく実行されるスクリプトがあります。ファイル(input.txt)から入力を読み取り、それを処理して、結果を別のファイル(ouput.txt)にエクスポートします。全体の持続時間は1秒以内です。しかし、Javaから実行しようとすると、スタックして終了しません。これは私のコードです:

Process p = new ProcessBuilder("./runCalculator.sh").start();
p.waitFor();

私も試してみましRuntime.getRuntime().exec("./runCalculator.sh")たが、すべて同じです。プロセスのInputStreamとErrorStreamの両方を読みました。エラーストリームは、「計算を開始しています...」のようなメッセージのみを返します。

何か案は?

4

4 に答える 4

4

次のコードを使用する必要があります。

ProcessBuilder pb = new ProcessBuilder();
pb.command("bash", "-c", "./runCalculator.sh");
Process process = pb.start();
int retValue = process.waitFor();
于 2012-05-19T13:16:58.227 に答える
3

これを機能させるには、おそらくunixコマンドインタープリター/プロセッサーを呼び出す必要があります。参照してください:Runtime.exec()が実行されない場合

于 2012-05-19T13:14:32.613 に答える
3

これを試して:

Process p = new ProcessBuilder("sh ./runCalculator.sh").start();
于 2012-05-19T13:15:28.347 に答える
0

もう1つの簡単な解決策は、スクリプトを作成して呼び出す代わりに、プログラムの名前を入力して(これはプログラムがインストールされていることを前提としています)プログラムを開くことができることです。

プログラムの名前は、Gnomeのメニューに表示されるものとは限らないことに注意してください。たとえば、Gnomeの計算機は「gnome-calculator」です。

この事実に関して、あなたは次の行で計算機を実行することができます:

Process p = Runtime.getRuntime().exec("gnome-calculator");

その場合、shスクリプト(この場合はrunCalculator.sh)は必要ありません。

于 2013-10-28T16:18:33.050 に答える