Как удалить пакет в приложении RCP во время его запуска

У меня есть приложение RCP, когда я копирую новый плагин (скажем, com.XXX.version) в папку плагинов моего продукта RCP, и при запуске продукта этот недавно скопированный плагин загружается фреймворком и заменяет старый ( при условии, что версия, которую я скопировал, больше существующей).

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

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


person Ragu    schedule 03.10.2014    source источник


Ответы (2)


Вы пытались удалить плагин в вашем BundleContext перед удалением?

Platform.getBundle("yourBundle").uninstall();

Для получения дополнительной информации об uninstall() см. JavaDoc

person alphakermit    schedule 06.10.2014
comment
Привет, Меммерлинг, спасибо за ваш ответ. Я попробовал метод uninstall(), но даже тогда блокировка не снимается. Он просто изменяет состояние пакета на UNINSTALLED. - person Ragu; 07.10.2014

Я нашел ответ на свой вопрос.

Мое требование состоит в том, чтобы очистить все установленные плагины, и это невозможно сделать, когда JVM находится в рабочем состоянии (я имею в виду, когда приложение RCP работает). Поэтому я попытался удалить JAR-файлы плагина при выходе из JVM (т. е. во время выхода из RCP), используя метод java.io.File.deleteOnExit(), который очищает плагин при выходе из приложения. При следующем повторном запуске приложения RCP эти плагины будут отозваны, и, следовательно, оно вернется к предыдущему состоянию.

person Ragu    schedule 08.10.2014