Java Runtime.getRuntime()。exec()忽略路径空间

时间:2017-11-20 06:44:50

标签: java unix macos-sierra

我遇到了一个问题,我没有看到其他任何人遇到的问题,那就是使用exec()来执行Unix命令,但是当它包含空格时,使用的是可变路径而不是固定路径。我见过的大多数解决方案都是带有空格的路径涉及操纵字符串,我无法用它做同样的事情。这是我的代码。

void launchApp(String appName) {//TODO ignore spaces in names!
    String[] cmd1 = new String[] {"chmod +x ", (new File(dataPath(""))).getParentFile().getParentFile().getParentFile().getParentFile().getPath() + "/" + appName + "/" + appName + ".app/Contents/MacOS/" + appName + ""};
    String[] cmd2 = new String[] {"open ", (new File(dataPath(""))).getParentFile().getParentFile().getParentFile().getParentFile().getPath() + "/" + appName + "/" + appName + ".app"};
    saveStrings("log0", cmd1);
    try {
        Runtime.getRuntime().exec(cmd1);
        Runtime.getRuntime().exec(cmd2);
    } catch (IOException e) {
        println(e);
    }
}

(不要质疑真正复杂的路径......它们正是我完成这个原型所需的工作:)无论如何都会有变量可以解决)

顺便说一下,我意识到我可以使用ProcessBuilder而不是Runtime.getRuntime()。exec(),我已经看到它作为问题的解决方案,但我已经尝试过它并不起作用。发布时我只是以exec()格式使用它。

感谢您提供任何帮助!

0 个答案:

没有答案