Mac命令中的Java命令Runtime.getRuntime().exec()
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Mac命令中的Java命令Runtime.getRuntime().exec(),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1413字,纯文字阅读大概需要3分钟。
内容图文
![Mac命令中的Java命令Runtime.getRuntime().exec()](/upload/InfoBanner/zyjiaocheng/815/4f4c925357544627a38adb3b384c7e9e.jpg)
我使用的是Mac OS Lion,java版本为1.6.0_26
我正在为Java制作一个小型应用程序,并为用户提供主菜单,因此他可以选择多个选项.
其中之一是使用.pkg安装应用程序
使用这些命令一切正常:
File instFolder = new File(System.getProperty("user.dir") + "/foldername/appInstaller.pkg");
String s = "open "+ instFolder.toString();
Process p = Runtime.getRuntime().exec(s);
然后我意识到当foldername有空格或者我把这个带有所需子文件夹的java文件复制到名为“NO NAME”的USB笔式驱动器(或带空格的某个名称)时会出现问题.
因为s会变成:
open / Volumes / NO NAME / foldername / appInstaller.pkg
要么
open / Users / user1 / Desktop / folder name / appInstaller.pkg
因此,当您运行p进程时,该命令将在路径上出现第一个空格的位置完成
open / Volumes / NO
要么
打开/ Users / user1 / Desktop /文件夹
为了解决这个问题,我改变了s定义,如下所示:
String s = "open "+ "\"" + instFolder.toString() + "\"";
它停止了正常工作.奇怪的是,如果我复制s值(在创建s变量之后)并将其粘贴到终端中,它可以工作:
打开“/ Users / user1 / Desktop / folder name / appInstaller.pkg”
但是从Java运行它不起作用.
请问你能帮帮我吗?
谢谢.
解决方法:
为了正确转义参数,您可以使用以下命令:
Runtime.getRuntime().exec(new String[] { "open", instFolder.toString() });
虽然我可能会使用更现代的ProcessBuilder:
ProcessBuilder pb = new ProcessBuilder("open", instFolder.toString());
Process p = pb.start();
int exitCode = p.waitFor();
虽然this可能值得一读,具体取决于您想要对流程输出做什么.
注意:编辑以反映评论中的问题
内容总结
以上是互联网集市为您收集整理的Mac命令中的Java命令Runtime.getRuntime().exec()全部内容,希望文章能够帮你解决Mac命令中的Java命令Runtime.getRuntime().exec()所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。