2

Runtime.getRuntime().exec() を使用して、Java コードからシェル スクリプトを実行しています。パラメータを文字列として渡すと、コードは正常に機能します

      Runtime.getRuntime().exec("sh test.sh")

スペースを含むパスである追加の引数を渡す必要があるため、文字列を文字列配列に置き換えました。

      String[] cmd = {"sh test.sh", "/Path/to my/resource file"};
      Runtime.getRuntime().exec(cmd)

私も試してみました

      String[] cmd = {"sh test.sh"};
      Runtime.getRuntime().exec(cmd)

しかし、どちらも機能しませんでした。そのスロー例外

   java.io.IOException: Cannot run program "sh test.sh":
   java.io.IOException: error=2, No such file or directory

String として渡されたときに同じスクリプト ファイルが機能し、String 配列で使用すると例外がスローされるのはなぜですか。誰もがこの問題に直面しましたか。Runtime.exec() の引数として文字列配列を使用してこれを機能させるのを手伝ってください。前もって感謝します。

4

1 に答える 1

5

最初の文字列がコマンドになりました。実行するファイル「sh test.sh」がありません。

変化する

 String[] cmd = {"sh test.sh", "/Path/to my/resource file"};

String[] cmd = {"sh",  "test.sh", "/Path/to my/resource file"};

(一般的に使用されるプロセスビルダー API )

于 2012-10-11T06:10:01.550 に答える