2014-10-03 36 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

相关问题