Попытка запустить приложение из Java - PullRequest
0 голосов
/ 25 октября 2019

Мне нужно запустить «команду 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 = Runtime.getRuntime ();Процесс p = runtime.exec ("c: / Program Files / Oracle / VirtualBox / vboxmanage list vms");

Спасибо.

1 Ответ

1 голос
/ 25 октября 2019

Попробуйте использовать полный путь к исполняемому файлу, как при использовании Runtime.exec

List<String> comand = Arrays.asList(
    "c:/Program files/Oracle/VirtualBox/VBoxManage",
    "list",
    "vms" 
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...