0

OSGi アプリケーションを実行しており、共有ライブラリ S1 と S2 をそれぞれ使用するバンドル B1 と B2 があります。S1 と S2 には、エクスポートされた冗長なメソッドがかなりあります。両方のバンドルがそれぞれの共有ライブラリからのみメソッドを呼び出すようにします (したがって、B1 は S1 を使用し、B2 は S2 を使用します)。osx では、これが動作です。しかし、Linux では動作が異なります。どちらの osgi バンドルも、最初にロードされる sharedlib のメソッドを使用します。これは、共有ライブラリが同じプロセスによってロードされるためだと推測しています。

各バンドルがそれぞれの共有ライブラリのメソッドのみを使用していることを確認するにはどうすればよいですか?

4

1 に答える 1

1

Manifest.MF でバンドルのバージョンを宣言する必要があります。

S1 マニフェスト ファイルに挿入

Bundle-Version: 1.0.0.S1

そしてB1マニフェストへ

Import-Package: yourpackage;version="1.0.0.S1"

S2 マニフェスト ファイルに挿入

Bundle-Version: 1.0.0.S2

そしてB2マニフェストへ

Import-Package: yourpackage;version="1.0.0.S2"

このようにして、S1 のパッケージとクラスのみを使用します

于 2012-12-12T15:48:28.867 に答える