| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Перезапуск java -приложения |
| Автор: savage_fx 25.7.2007, 23:05 |
| Как сделать , чтобы программа закончила работу , а после сразу автоматически запустилась ее новая копия. Если можно то приведите пожадуйста пример кода. |
| Автор: nornad 26.7.2007, 05:59 |
| Например, в функции main запускать главную форму в цикле и в модальном режиме. При возврате смотреть на некоторый статус и решать, запускать снова или завершаться совсем. |
| Автор: anonymouse 26.7.2007, 08:52 |
| Обычно используется .bat или .sh файл. Программа при выходе возвращает специфический код. (например System.exit(99)). А в батнике проверяется, и для этого кода программа запускается снова. (можно и заменить старую версию на новую перед запуском). Если же программа вернулась с другой ошибкой, значит либо произошла непредвиденная ошибка, или планировался "полный" выход из программы. |
| Автор: LSD 26.7.2007, 14:42 | ||
|
| Автор: niasilil 27.7.2007, 06:11 |
| addShutdownHook вместе с ProcessBuilder - красиво, блин. |
| Автор: anonymouse 27.7.2007, 10:56 |
| Сколько всего интересного оказывается добавили в 1.5. Не знал. LSD + |
| Автор: LSD 27.7.2007, 11:51 |
| Ну ProcessBuilder необязателен, можно обойтись Runtime.exec(), а Runtime.addShutdownHook() появилось еще в 1.3. |
| Автор: niasilil 27.7.2007, 21:49 | ||
вопрос: как быть если программа xxx.jar не позволяет запускать двух инстансов самой себя, тогда при исполнении addShutdownHook запускает саму себя же xxx.jar и не запустится? новый поток, который ждет завершени xxx.jar и запускает заново? некузяво как то. |
| Автор: LSD 28.7.2007, 12:38 | ||
Если программа не позволяет запускать саму себя, то из этой программы нельзя ее и перезапустить. Надо или использовать внешнее приложение или скрипт ОС. |
| Автор: niasilil 28.7.2007, 20:46 | ||||
о, точно. с помощью ProcessBuilder запустить отдельный jar, в котором запустить эту же программу. А какой скрипт можно написать чтобы на всех ОС работал? Можно ли такое сделать? |
| Автор: w1nd 29.7.2007, 00:20 | ||
Питон или Перл. Только должны быть установлены соответствующие интерпретаторы ;) |
| Автор: nornad 29.7.2007, 02:17 |
Ну, тогда можно что угодно, вплоть то до шелла. Ну уверен, но может JavaScript? |
| Автор: nerezus 29.7.2007, 12:13 | ||
| nornad, джаваскрипт работает в браузере и имеет куеву хучу ограничений. И не подходит.
|
| Автор: nornad 29.7.2007, 14:15 |
В винде (начиная с 2к, хотя и на 9х поставить можно) жаваскрипт не только в браузере работает. Про WSH слышал? Ограничений (таких сильных, как в браузере) этот вариант не имеет. Подозреваю, что в линухе тоже можно запустить жаваскрипт на уровне системы, а не браузера. Но гарантий не дам. |
| Автор: nerezus 29.7.2007, 14:24 |
| nornad, в винде не жабаскрипт, а JScript В линухе же тоже можно, если найдешь интерпретатор, но... найдешь ли ты его? =) |
| Автор: LSD 30.7.2007, 11:44 |
| Ну если уж такая нужда в кросплатформе, то лучше написать приложение watchdog. Которое будет перезапускать указанное приложение, и заодно может проверять не зависло ли основное приложение, и если зависло то завершить его и запустить заново. |