Exec Command не выполняется должным образом в Java - PullRequest
0 голосов
/ 28 марта 2011

У меня есть Java-проект, который я хочу запустить из другой Java-программы.Но когда я вызываю его с помощью команды exec, она выполняется не сразу, а ожидает завершения текущей программы.Если я добавлю оператор waitFor, то программа зависнет, так как основная программа ожидает процесс, а процесс ожидает основную программу.Кто-нибудь знает, как я могу решить это?Или почему так себя ведет?Мне нужно, чтобы этот файл jar запустился раньше, чем второй.

Runtime.getRuntime().exec("java -jar \"JavaProject1/dist/JavaProject1.jar\"");
        System.out.println("Hello");
        p.waitFor();

Расположение файла jar в порядке, и он печатает приветОсновной класс для файла JAR, который я хочу запустить, находится в этой теме по адресу DaniWeb

Ответы [ 2 ]

1 голос
/ 28 марта 2011

Помимо прочего, вы должны продолжать читать из процессов STDOUT и STDERR, в противном случае он будет блокироваться.

См., Например, http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

0 голосов
/ 28 марта 2011

почему он так себя ведет?

Потому что вы создаете тупик в своей собственной программе.

Когда вы добавляете waitFor() вашу программу main () в этом случае ожидает завершения внешнего процесса.

Возвращает ноль при нормальном завершении внешнего процесса.

Возможно, внешняя программа имеет некоторые проблемы

...