Как программно перезапустить банку? - PullRequest
3 голосов
/ 10 июня 2010

Может ли исполняемый файл jar перезапустить себя? Например, после того, как пользователь сделал какой-то выбор, программа говорит: «Перезапустить приложение?» и пользователь нажимает «Да», затем банка закрывается и перезапускается.

Ответы [ 2 ]

3 голосов
/ 10 июня 2010

Необходимость для перезапуска приложения является признаком плохого дизайна.

Я бы очень постарался, чтобы иметь возможность "переинициализировать" приложение (перечитать файлы конфигурации, восстановить соединения или что-то еще).когда-либо) вместо того, чтобы заставлять пользователя завершать / запускать приложение (даже если это делается автоматически).

Наполовину «взломать» будет заключаться в том, чтобы инкапсулировать ваше приложение в некоторый класс бегуна, который реализует нечто вроде

public class Runner {
    public static void main(String... args) {
        while (true) {
            try {
                new YourApplication().run();
                return;
            } catch (RestartException re) {
            }
        }
    }
}
2 голосов
/ 10 июня 2010

Ну, если вы знаете расположение файла Jar в файловой системе, вы можете программно запустить Jar. А затем выйдите из текущей запущенной версии.

Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("java -jar locatio/of/the/jar");
System.exit(0);
...