0

可以说我有这个代码

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 执行命令时,它就会关闭,也许是转义反斜杠的问题?我要做的就是打开一个名称中带有空格的应用程序,无论是否使用终端。

4

2 回答 2

0

使用ProcessBuilder而不是 Runtime.exec()。

于 2012-07-28T23:24:24.480 回答
0

无需使用exec.

我已经尝试了您的代码,删除了replaceAll,并打开了一个应用程序,应用程序名称包含空格,包含目录中包含空格,并且代码启动了应用程序。

此外,syslog -l需要一个日志级别参数。

于 2012-07-27T21:06:22.740 回答