4

Javaプログラムからjarファイルを実行しようとしていますが、次を使用して成功しgetRuntime()ます。

Process processAlgo = Runtime.getRuntime().exec("java -jar "+algoPath);

ただし、使用しようとするProcessBuilderThe system cannot find the file specified例外が発生します。

ProcessBuilder builder = new ProcessBuilder("java -jar " + algoPath);
Process processAlgo = builder.start();

指定されたファイルの場所を変更しようとしましたが、そのフルパスも示しましたが、機能しません。何が問題を引き起こす可能性がありますか?

4

2 に答える 2

10

ProcessBuilderパラメータが個別に渡されることを想定しています。

つまり、コマンドと引数ごとに、ProcessBuilderそれを個別のパラメーターとして表示することを期待します。

現在、「algoPathの値が何であれjava -jar」を実行するように指示しています...これProcessBuilderは、の観点からは無効なコマンドです。

試す...

ProcessBuilder builder = new ProcessBuilder("java",  "-jar", algoPath);
Process processAlgo = builder.start();

その代わり。

スペースが含まれている場合algoPath(つまり、複数の引数)、それらも個々のパラメーターに分割する必要があります。そうしないと、JavaがalgoPath単一のパラメーターと見なすため、プログラムは実行されません。

詳細については、 JavaDocsを確認してください

于 2013-02-21T10:13:47.430 に答える
0

はい、「java」を最初のパラメーターにする必要があり、他のすべての引数は他のパラメーターで送信する必要があります。

この行「bash/path/script.sharg1arg2」の実行に問題がありました...最初に渡したパラメーターが「bash/path/script.sh」、「arg1」、「arg3」だったためです。例外の取得:JAVAでコマンドが見つかりません。

パラメータで各要素を分離すると、正常に機能しました。"bash"、 "/ path / script"、 "arg1"、"arg2"。

于 2015-02-27T19:11:25.010 に答える