Кажется, я помню, что у меня была похожая проблема, и я обнаружил, что процесс не завершится, пока не будет использован его вывод.Попробуйте сохранить ссылку на объект Process
, возвращенный методом exec времени выполнения, например так ...
Process proc = Runtime.getRuntime().exec(cmd);
... затем получите входной поток из процесса и просто прочитайте его, пока он не закончится.
InputStream ips = proc.getInputStream();
while(ips.read() != -1) {}
Необходимо добавить обработку ошибок.Возможно, вам придется сделать то же самое для stderr, а не только для stdout.
РЕДАКТИРОВАТЬ: о, и, конечно же, не забудьте закрыть поток.Похоже на то, что держится за системные ресурсы.