我已经部署了一些Eclipse插件,我希望它们能够在不重新启动Eclipse环境的情况下生效。是不可能的?
答案 0 :(得分:2)
在纯OSGi级别,您将使用
BundleContext.installBundle()
然后PackageAdmin.refreshPackages()
,如有必要,也许Bundle.start()
。
这在您的正在运行的系统中的运行情况将取决于系统其余部分如何使用您的捆绑包,以及当旧版本消失并出现新版本时,情况会如何反应。
看看wiki中的这两个faq条目:
How do I make my plug-in dynamic aware?
How do I make my plug-in dynamic enabled?
要在更高级别执行此操作,您需要查看p2。
答案 1 :(得分:1)
是的,确实如此。 OSGi(和Eclipse是基于OSGi的)提供了一种动态捆绑加载的方法,而无需重新启动环境。但是,eclipse建议重新启动,因为它在100%的情况下工作,但它不能保证所有插件都能正确编写。您可能在安装插件后看到了“应用更改”按钮 - 这会尝试重新加载它而不重新启动。