Проблема с перезапуском автономного приложения RCp

У меня проблема с перезапуском приложения RCP. Когда я запускаю под Eclipse, все в порядке, но когда я создаю автономный перезапуск приложения, просто закрывайте приложения. Я использую следующий код: IWorkbench workbench = PlatformUI.getWorkbench(); верстак.перезапустить(); Кто-нибудь знает, как это решить.

СПАСИБО


person Community    schedule 06.10.2009    source источник


Ответы (1)


Эта ветка интересна в этом отношении (она объясняет, почему это работает, когда RCP запускается из eclipse, а не при автономной работе)

Если верстак перезапускается, например. через IWorkbench.restart(), что приводит к тому, что PlatformUI.createAndRunWorkbench(...) возвращает управление приложению (реализация IPlatformRunnable для расширения приложения) с кодом возврата PlatformUI.RETURN_RESTART (значение равно 1).

Затем приложение должно сопоставить это с кодом возврата приложения IPlatformRunnable.EXIT_RESTART (значение равно 23).

Затем он становится кодом выхода виртуальной машины Java (то есть System.exit(code)).
Исполняемый файл eclipse.exe обнаруживает этот специальный код и повторно запускает виртуальную машину Java, используя те же аргументы командной строки, что и в первый раз.

Если вы не используете eclipse.exe, а запускаете виртуальную машину Java самостоятельно, она не перезапустится автоматически. Вам нужно будет обрабатывать код выхода самостоятельно.

Таким образом, подобный код в вашем RCP необходимо будет изменить с помощью какой-либо программы запуска, чтобы интерпретировать (и при необходимости перезапустить приложение rcp) существующий код.
(немного похоже на это удаленное управление RCP вики-страница)

WorkbenchAdvisor workbenchAdvisor = new CoreAppWorkbenchAdvisor();
Display display = PlatformUI.createDisplay();
try {
  int returnCode = PlatformUI.createAndRunWorkbench(display, workbenchAdvisor);
  if (returnCode == PlatformUI.RETURN_RESTART)
    return IPlatformRunnable.EXIT_RESTART;
  else
    return IPlatformRunnable.EXIT_OK;
  }
  finally {
    display.dispose();
  }
}
person VonC    schedule 06.10.2009