ProcessBuilder.start () приводит к закрытию JVM хоста - PullRequest
0 голосов
/ 18 января 2012

Я разрабатываю сетевое приложение, в котором есть JVM клиента и сервера, оба из которых должны зависеть от набора идентичных jar-файлов, которые могут храниться или не храниться в одном и том же месте.Сразу после подключения к Серверу Клиент сравнивает суммы MD5 своих jar-файлов с jar-файлами на сервере.Если суммы MD5 не совпадают, Клиент загружает файлы JAR Сервера в новую папку и пытается создать новый Process, который не зависит ни от одного из файлов JAR, которые использует Клиент, и завершается.Этот новый Process затем должен перезаписать банки клиента с копиями с сервера, которые клиент сохранил в новой папке, упомянутой выше, а затем завершиться.

Проблема заключается в том, что каждый раз, когда клиент пытается запуститьновый процесс, JVM Клиента завершает работу без вывода сообщений.Вот код, который порождает новый Process:

System.err.println("##### creating ProcessBuilder ...");
ProcessBuilder pb = new ProcessBuilder();

System.err.println("##### setting command line args ...");
pb.command("java","-jar","some-jar-not-used-by-the-client.jar");

System.err.print("##### starting ProcessBuilder: ");
for(String opt : pb.command()) System.err.print(opt+" ");
System.err.println();

pb.start();
System.err.println("##### Process started, exiting host process ...");

Клиент, кажется, завершает работу при вызове на pb.start().Вот вывод консоли моей программы:

##### creating ProcessBuilder
##### setting command line args
##### starting ProcessBuilder: java -jar some-jar-not-used-by-the-client.jar

Оператор print после pb.start() никогда не вызывается.Я проверял это как в Java 6, так и в Java 7, и я также пытался использовать Runtime.getRuntime().exec(), но безрезультатно.Кто-нибудь видел что-нибудь подобное раньше?

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

К сожалению, ошибка, замеченная Farmor, была закрыта

Состояние 11-Закрыто, не воспроизводимо, ошибка Приоритет: 4-Low

1 голос
/ 18 января 2012

Я не прочитал ваш пост, но прочитал Когда Runtime.exec () не будет - JavaWorld

0 голосов
/ 19 января 2012

Оказывается, это ошибка в Java 1.7.0_01 (работает на 64-битной Windows 7 Enterprise Edition).Я обновился до Java 1.7.0_02 и проблема ушла.Я отправил Sun сообщение об ошибке, вот ссылка на отчет:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7131522

Может потребоваться день или два, чтобы ссылка стала активной, но, надеюсь, люди ста же самая ситуация может проследить за ходом работы над этим отчетом и соответствующим образом исправить их проблемы.

...