尝试从Java运行应用程序

问题描述 投票:0回答:1

我需要运行“ 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”);

谢谢。

java runtime processbuilder
1个回答
0
投票

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

List<String> comand = Arrays.asList(
    "c:/Program files/Oracle/VirtualBox/VBoxManage",
    "list",
    "vms" 
);
© www.soinside.com 2019 - 2024. All rights reserved.