在Mac OS中使用Runtime.getRuntime().exec()会导致错误

Bra*_*rad 2 java macos runtime

我试图在我的Java应用程序中使用此代码在Mac OS X中运行另一个Jar:

Runtime runtime = Runtime.getRuntime();
String cmd = "java -Xmx1024m -jar \"/Volumes/NANO PRO/My Program/Main.jar\"";
Process process = runtime.exec( cmd );
Run Code Online (Sandbox Code Playgroud)

如果Main.jar存在于没有空格的路径中,它将正常工作,但由于它存在于带空格的路径中,因此会导致错误:

在此输入图像描述

有没有办法在有空格的路径中运行?

Vik*_*dor 8

使用数组构建命令的不同部分,并将其保留给Java运行时,以根据底层环境适当地转换它们.

String [] cmd = {"java", 
                 "-Xmx1024m", 
                 "-jar",
                 "/Volumes/NANO PRO/My Program/Main.jar"};
Run Code Online (Sandbox Code Playgroud)

您还可以查看ProcessBuilder: