Как да деинсталирате пакет в 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
Здравей Memmerling, Благодаря за отговора ти.. Опитах метода uninstall(), но дори и тогава заключването не се освобождава. Той просто променя състоянието на пакета на ДЕИНСТАЛИРАН. - person Ragu; 07.10.2014

Намерих отговор на проблема си.

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

person Ragu    schedule 08.10.2014