我正在实现一个包含三个包的 GUI(摆动)应用程序,比如说 bundleA、bundleB 和 bundleC。我使用 BundleContext.installBundle(String location) 方法将所有这三个包安装在/使用单独的安装包中。
当我使用另一个名为“UpgradeBundle”的包来更新三个已安装的包之一时,问题就开始了。更准确地说,我调用 BundleC.update(null) 方法,然后调用 FrameworkWiring.refreshBundles(BundlesForRefresh, null) 方法,因为我读到包更新需要调用 FrameworkWiring.refreshBundles。然而,对 FrameworkWiring.refreshBundles 的调用会导致启动一个带有更新包的新 GUI 应用程序(而不是在已经运行的应用程序实例中更新它),而已经运行的应用程序继续使用旧包运行。知道为什么会这样吗?
如果您需要对该问题进行更多详细说明,请告诉我,我将尝试进一步解释该问题。
PS 我正在使用 Equinox OSGi 框架。