bundleA、bundleB、および bundleC などの 3 つのバンドルで構成される GUI (swing) アプリケーションを実装しています。BundleContext.installBundle(String location) メソッドを使用して、これら 3 つのバンドルをすべて別のインストーラー バンドルにインストールします。
「UpgradeBundle」という名前の別のバンドルを使用して、既にインストールされている 3 つのバンドルのうちの 1 つを更新すると、問題が発生します。より正確に言うと、バンドルの更新には FrameworkWiring.refreshBundles の呼び出しが必要であると読んだので、BundleC.update(null) メソッドを呼び出してから FrameworkWiring.refreshBundles(BundlesForRefresh, null) メソッドを呼び出します。ただし、FrameworkWiring.refreshBundles を呼び出すと、(既に実行中のアプリケーション インスタンスで更新するのではなく) 更新されたバンドルで新しい GUI アプリケーションが起動されますが、既に実行中のアプリケーションは古いバンドルで実行され続けます。なぜこれが起こっているのですか?
この問題についてさらに詳しく説明する必要がある場合は、お知らせください。問題について詳しく説明します。
PS Equinox OSGi フレームワークを使用しています。