我遇到了一个问题,我没有看到其他任何人遇到的问题,那就是使用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()格式使用它。
感谢您提供任何帮助!