我需要运行“ VBoxManage vms list命令”以查看通过Java应用程序安装在计算机上的虚拟机。
以下代码正确运行,但仅当我使用Runtime类时,但我想知道为什么如果我使用ProcessBuilder却失败了。
代码如下:
public static void main(String[] args) throws IOException {
String folder= "c:/Program files/Oracle/VirtualBox";
List<String> comand = Arrays.asList(
"VBoxManage",
"list",
"vms"
);
ProcessBuilder pb = new ProcessBuilder()
.directory(new File(folder))
.command(comand);
Process p = pb.start();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while((line=br.readLine()) != null){
System.out.println(line);
}
}
如果我将Runtime类与以下代码一起使用,则效果很好:运行时runtime = Runtime.getRuntime();进程p = runtime.exec(“ c:/程序文件/ Oracle / VirtualBox / vboxmanage list vms”);
谢谢。
尝试使用可执行文件的完整路径,就像使用Runtime.exec时一样
List<String> comand = Arrays.asList(
"c:/Program files/Oracle/VirtualBox/VBoxManage",
"list",
"vms"
);