正在尝试 运行 来自 Java 的应用程序

Trying to run an application from Java

我需要 运行 "VBoxManage vms list command" 从 Java 应用程序查看安装在计算机上的虚拟机。

以下代码可以正常工作,但前提是我使用运行时 class 但我想知道为什么如果我使用 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);
    }
}

如果我将运行时 class 与以下代码一起使用,则效果很好: 运行时间 运行time = Runtime.getRuntime(); 进程 p = runtime.exec("c:/Program files/Oracle/VirtualBox/vboxmanage list vms");

谢谢。

尝试使用可执行文件的完整路径,就像使用 Runtime.exec

时一样
List<String> comand = Arrays.asList(
    "c:/Program files/Oracle/VirtualBox/VBoxManage",
    "list",
    "vms" 
);