您正在一次调用该程序及其参数,这有效地将整个字符串推入了处理环境(希望达到最佳效果)。
在Windows系统中,操作系统着重于以不同的方式处理可执行文件和参数,并将它们全部放在同一字符串中只是要求您选择环境(我知道其中有两个)可以重新使用的理想字符串。
-parse进入参数列表。更好的解决方案是使用
Runtime.exec(new String[] {"vboxmanage", "setextradata", "Test Machine", "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort", "2222"});对应于
Runtime's
public Process exec(String[] cmdarray) throws IOException
充其量,使用一个字符串方法,您最终将找到如何提示和转义参数,以免将它们视为可执行文件名称的一部分,但是随后您将遇到一个新问题,即它们被传递了。全部作为可执行文件的一个参数。一旦根据环境修复了该问题,您要么会发现自己的引号没有从参数中剥离(导致出现诸如“
2222”之类的参数),要么发现Window的半连续参数解析将首先在空白处进行解析(导致出现诸如(“
Test)之类的参数。这没有意义,这就是为什么有不止一种
exec方法可用的原因。



