Может ли Java.exe JVM перезапустить себя как-нибудь? - PullRequest
2 голосов
/ 13 ноября 2009

Может ли Java.exe JVM перезапустить себя как-нибудь? Если у вас есть Java-программа, работающая в оболочке DOS (НЕ в качестве службы), то каков самый чистый и эффективный способ закрыть, закрыть оболочку и перезапустить себя с другим идентификатором процесса Windows и снова открыть в другая оболочка с перезагрузкой пути к классам?

Я ожидаю, что это невозможно, но я подумал, что я должен спрашивать и учиться у других людей, спрашивая.

ПРИМЕЧАНИЕ. Если кто-то знает, как Eclipse IDE может перезапускать себя настолько аккуратно, то этот метод я и хочу использовать.

Ответы [ 3 ]

6 голосов
/ 13 ноября 2009

Здесь может помочь Java Service Wrapper . Вы можете запустить свой Java-процесс под ним, но не обязательно как сервис . Вы можете определить характеристики перезапуска, чтобы при выходе программа Java была перезапущена (либо по System.exit(), либо по вызову WrapperManager.restart()).

1 голос
/ 13 ноября 2009

Самый простой и простой способ сделать это - запустить программу из командного файла DOS (или, если хотите, сценария CMD). Создайте цикл в вашем командном файле DOS. Вы ставите :label в начале и GOTO label ниже вашего Java-процесса, и он уходит. При необходимости вы можете выйти из цикла, используя Ctrl - C .

0 голосов
/ 13 ноября 2009

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

Вы можете либо внедрить эту программу в свою основную программу и скопировать ее во временный каталог для ее выполнения, либо включить ее рядом с вашей программой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...