我正在创建一个java应用程序,它将是bash脚本的GUI ..
将使用该应用程序浏览脚本位置并输入其他2个参数..
并构建并执行命令..
所以执行部分将是这样的:
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(scriptPath + parameter1 + parameter2);
如果脚本的位置中没有空格,该命令是否有效..
但是当它有空格时它会在到达第一个空格时停止。 它给了我" java.io.IOException:" exeption ..找不到文件..
我尝试用退格和空格替换空格..
scriptPath.replace(" ", "\\ ")
我也尝试在路径
之前和之后添加引号"\"" + scriptPath + "\""
我已经一起试过了..
"\"" + scriptPath.replace(" ", "\\ ") + "\""
但他们都没有工作..
任何帮助将不胜感激..
问候..
答案 0 :(得分:2)
请改用ProcessBuilder。它有一个构造函数,允许您将参数作为单独的字符串添加,并应处理空格。
答案 1 :(得分:2)
Runtime
's exec(String)
method只是将字符串拆分为空格;它并不了解任何引用。相反,您可以使用带有数组的exec(String[])
method,因此不必应用任何拆分逻辑:
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(new String[] { scriptPath, parameter1, parameter2 });