このコードがあるとしましょう
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);
}
}
問題は、印刷でパスを出力してターミナルでコマンドを試すと、アプリケーションが開きますが、Java からコマンドを実行しようとすると、単に閉じてしまうことです。バックスラッシュのエスケープの問題でしょうか? 私がやりたいことは、端末を使用するかどうかにかかわらず、名前にスペースが含まれるアプリを開くことだけです。