I'm使用Mac OS狮子,用java版本的exec()1.6.0_26Java命令调用Runtime.getRuntime()。在Mac OS中
我正在做一个小的应用程序的Mac在Java中有一个主菜单对于用户来说,他可以选择几个选项。
其中之一是使用的.pkg
一切工作正常使用这些命令安装应用程序:
File instFolder = new File(System.getProperty("user.dir") + "/foldername/appInstaller.pkg");
String s = "open "+ instFolder.toString();
Process p = Runtime.getRuntime().exec(s);
然后我意识到有问题时,文件夹名称中有空格,或者如果我复制这个带有所需子文件夹的java文件以“NO NAME”作为名称(或带空格的某个名称)作为USB笔驱动器。
由于S1将成为类似:
开/卷/ NO NAME/FOLDERNAME/appInstaller.pkg
或
开/用户/用户1 /桌面/文件夹名称/ appInstaller.pkg
所以,当你运行该p过程中,该命令将完成,其中第一空间的路径上出现
开/卷/ NO
或
开/用户/用户1 /桌面/文件夹
要尝试解决这个问题,我改变了的定义这样的事情:
String s = "open "+ "\"" + instFolder.toString() + "\"";
它停止工作正常。奇怪的是,如果我复制的价值(创建变量s后),并粘贴在终端它的工作原理:
开“/用户/用户1 /桌面/文件夹名称/ appInstaller.pkg”
但从Java运行它不起作用。
请问您能帮我吗?
谢谢。
嗨@ beny23:谢谢你的建议。他们都很好,但我有一个问题。假设instFolder是错误的,所以当我尝试运行安装程序时,进程将返回一个exitcode <> 0,所以我可以知道发生了错误。我如何检查与流程建设者? – user897013