我正在使用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。提前谢谢。
答案 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)