java Runtime.exec运行shell脚本

我正在使用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) 

但他们都没有奏效。 它抛出exception

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

为什么在作为String工作时传递相同的脚本文件,并且当与String数组一起使用时抛出exception。 有没有人遇到过这个问题。 请帮助我使用字符串数组作为Runtime.exec()的arugument。 提前致谢。

第一个字符串成了命令。 没有要执行的文件’sh test.sh’。

更改

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

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

(一般使用流程构建器API )