7

パッケージをエクスポートするバンドルを見つけるにはどうすればよいですか?

私は felix を使用しており、"com.test" のような文字列があります。どのバンドルがそのパッケージをエクスポートしているかを知るにはどうすればよいですか?

PackageAdmin は非推奨になったため使用したくありません。また、各バンドルの Export-Package ヘッダーを取得して解析したくありません。

何か案は?

4

4 に答える 4

11

Gogoシェルではなく、プログラムでこれを行いたいようです...少なくとも、質問の文言からそれを想定します。

特定のパッケージをエクスポートする多くのバンドルが存在する可能性があり、そのパッケージが多くのバンドルによって多くのバンドルから使用されている可能性があるため、「どのバンドル」が特定のパッケージをエクスポートするかを言う実際の方法はありません。特定のバンドルがあり、どのバンドルがそれにパッケージを提供するかを知りたいcom.test場合は、インポートするバンドルの配線を取得してからBundle.adapt(BundleWiring.class)、 を使用BundleWiring.getRequiredWires()してバンドルのすべての依存関係のプロバイダーを取得できます。

osgi.wiring.packageそこから、必要なパッケージの名前空間のワイヤーを見つけるだけで、そのワイヤーのプロバイダーは、関心のBundleCapabilityあるBundleRevisionバンドルの になります。

于 2012-08-12T03:45:34.947 に答える
3

Apache Felix OSGi コンソールの最近のバージョンには、特定のパッケージまたはクラスをエクスポートするバンドルを一覧表示する「依存関係ファインダー」プラグインが含まれています。http://www.6dlabs.com/blog/dklco/2012-05-04/new-cq-55-dependency-finderにいくつかのスクリーンショットがあります(CQ5 について言及していますが、プラグインはそれに依存していません)。

これは管理者レベルで役立ちます。コードで確認する必要がある場合は、そのプラグインのソース コードを参照してください。https://issues.apache.org/jira/browse/FELIX-3045を参照してください。

于 2012-08-13T07:54:35.503 に答える
2

試しましたか:エクスポート| grep com.test?

于 2012-08-11T22:33:58.020 に答える