让我说我有这个代码
import java.io.IOException;
public class Test
{
public static void main(String[] argv) throws InterruptedException, IOException {
String path = "/an app with spaces.app";
path = path.replaceAll(" ", "\\\\ ");
System.out.println(path);
Runtime.getRuntime().exec( new String[] { "open", path} );
Runtime.getRuntime().exec("syslog -s -l " + path);
}
}
当我在print中输出路径并在终端中尝试命令时,它会打开应用程序,但是当我尝试从Java执行命令时,它只是关闭,也许这是转义反斜杠的问题?我想要做的就是打开一个名称中带有空格的应用程序,使用终端或不使用终端。
答案 0 :(得分:0)
无需使用exec
转义空格。
我已经尝试了您的代码,删除了replaceAll
,并在应用程序名称中打开了包含空格的应用程序,包含目录中的和空格,以及代码启动了应用程序。
此外,syslog -l
需要一个日志级别参数。
答案 1 :(得分:0)
使用ProcessBuilder代替Runtime.exec()。