2014-10-03 208 views
0

我有一個RCP應用程序,當我將一個新插件(如com.XXX.version)複製到我的RCP產品的插件文件夾中並啓動產品這個新複製的插件被框架加載,它取代了舊的(提供了我複製的版本比現有版本更大)。如何在啓動期間在RCP應用程序中卸載軟件包

當我試圖做相反的過程(即,刪除新複製的插件並恢復到以前的狀態)當RCP應用程序處於運行狀態(即,應用程序正在使用)我跑到問題。問題是應用程序會鎖定這些更高版本的插件文件,因此我無法清理(或卸載)這些JAR文件。

任何解決方法存在完成此建議將不勝感激! 我想將應用程序恢復到以前的狀態。

回答

0

我發現我的問題的答案。

我的要求是清理所有已安裝的插件,並且在JVM處於運行狀態(我的意思是在RCP應用程序運行期間)期間不能完成。所以我試圖通過使用方法java.io.File.deleteOnExit()在JVM退出時(即,在我的RCP退出時)刪除插件JAR文件,該方法在應用程序退出時清理插件。在下一次重新啓動時,RCP應用程序將撤銷這些插件,因此會將其狀態恢復到之前的狀態。

0

您是否嘗試在刪除之前卸載BundleContext中的插件?

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

有關卸載的詳細信息()看到JavaDoc

+0

嗨Memmerling, 感謝您的回覆..我試過卸載()方法,但即使如此鎖沒有得到釋放。它只是將包的狀態更改爲UNINSTALLED。 – Ragu 2014-10-07 06:35:10