Ошибка при выполнении командного файла из программы Java - PullRequest
1 голос
/ 01 марта 2011

Вот моя проблема: у меня есть файл .bat, в котором есть несколько команд.Когда я вызываю этот bat-файл из моей java-программы, используя processbuilder, он начинает выполнять команды в файле .bat построчно.Однако, когда он достигает последней строки, которая выполняет Perl-программу, он зависает, и программа никогда не заканчивается.Он висит там навсегда.Любая идея, почему это может происходить.Просто для вашего сведения нет проблем с кодом Perl, и я могу выполнить

Ответы [ 2 ]

2 голосов
/ 05 марта 2011

Ваша Perl-программа записывает в стандартный вывод? Я подозреваю, что проблема заключается в том, что процесс Java перенаправляет стандартный вывод дочернего процесса и стандартный вывод ошибок в канал. Принимающая сторона этого канала подключена к java-программе, поэтому любой дочерний процесс, вызываемый из java, который записывает в стандартный вывод / ошибку, блокируется, если вы не можете прочитать его вывод. Вы должны либо исключить вывод программы perl, либо прочитать вывод дочернего процесса (Process.getInputStream() и / или Process.getErrorStream()) из вашей Java-программы.

0 голосов
/ 26 сентября 2013

Эй, я смог решить эту проблему. Все, что мне нужно было сделать, это включить в свой код Java оператор, который закрывает поток вывода процесса. Без которого он ожидал в командной строке, что Perl-программа будет выполняться вечно. Я не совсем уверен в поведении, любая информация поможет

...