【问题标题】:Using Java to open a mac application from terminal使用Java从终端打开一个mac应用程序
【发布时间】:2012-07-27 20:49:36
【问题描述】:

假设我有这个代码

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

【问题讨论】:

    标签: java terminal escaping backslash


    【解决方案1】:

    无需使用exec 转义空格。

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

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

    【讨论】:

      【解决方案2】:

      使用ProcessBuilder 代替 Runtime.exec()。

      【讨论】:

        猜你喜欢
        • 2010-09-30
        • 2017-08-31
        • 2012-02-25
        • 1970-01-01
        • 1970-01-01
        • 2019-09-08
        • 1970-01-01
        • 1970-01-01
        • 2018-12-23
        相关资源
        最近更新 更多