Как установить рабочий каталог с ProcessBuilder - PullRequest
30 голосов
/ 06 декабря 2011

Я пытаюсь запустить процесс в моем домашнем каталоге в Ubuntu. Я получаю массив за пределами исключения. Вот код:

Process p = null;
ProcessBuilder pb = new ProcessBuilder();
pb.directory(new File("/home"));
p = pb.start();

Вот исключение:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
    at tester.Main.main(Main.java:31)
Java Result: 1

1 Ответ

70 голосов
/ 06 декабря 2011

Вы пытаетесь выполнить / home, и это не исполняемый файл.Аргумент constructor построителя процесса - это команда для выполнения.

Вы хотите установить рабочий каталог.Это можно сделать с помощью метода directory .

Вот полный пример:

Process p = null;
ProcessBuilder pb = new ProcessBuilder("do_foo.sh");
pb.directory(new File("/home"));
p = pb.start();
...