栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java ProcessBuilder和Runtime.exec()之间的区别

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java ProcessBuilder和Runtime.exec()之间的区别

各种重载

Runtime.getRuntime().exec(...)
可以采用字符串数组或单个字符串。exec()在将字符串数组传递到采用字符串数组的
exec()
重载之一之前,的单字符串重载将把字符串标记为参数数组。的
ProcessBuilder
构造,在另一方面,只需要一可变参数串或阵列
List
串,其中假定该阵列或列表中的每个字符串为一个单独的参数。不管哪种方式,然后将获得的参数合并为一个字符串,然后将其传递给
OS
以执行。

因此,例如在Windows上,

Runtime.getRuntime().exec("C:DoStuff.exe -arg1 -arg2");

DoStuff.exe
使用两个给定参数运行程序。在这种情况下,命令行将被标记化并放回原处。然而,

ProcessBuilder b = new ProcessBuilder("C:DoStuff.exe -arg1 -arg2");

将失败,除非恰好是他的名字是一个程序

DoStuff.exe -arg1 -arg2在C:
。这是因为没有标记化:假定运行的命令已经被标记化。相反,你应该使用

ProcessBuilder b = new ProcessBuilder("C:DoStuff.exe", "-arg1", "-arg2");

或者

List<String> params = java.util.Arrays.asList("C:DoStuff.exe", "-arg1", "-arg2");ProcessBuilder b = new ProcessBuilder(params);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/430231.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号