java Runtime.exec运行shell脚本

时间:2012-10-11 06:07:40

标签: java shell runtime.exec

我正在使用Runtime.getRuntime()。exec()从java代码运行shell脚本。当我将参数作为字符串

传递时,代码工作正常
      Runtime.getRuntime().exec("sh test.sh")

由于我必须传递带空格的路径的附加参数,所以我用String数组替换了String。

      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()的arugument。提前谢谢。

1 个答案:

答案 0 :(得分:4)

第一个字符串成为命令。没有文件'sh test.sh'可以执行。

更改

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

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

(通常使用process builder API