28

私はしばらくの間OSGiを使っていますが、プライベートパッケージについてはまだ理解していません。

  • エクスポートされたパッケージは、他のバンドルに表示されるパッケージです
  • インポートされたパッケージは、パッケージをエクスポートするバンドルによってインポートされたパッケージです。
  • プライベートパッケージは、他のバンドルには表示されないパッケージです(これは取得できません)

エクスポートされていないすべてのバンドルパッケージは、他のすべてのパッケージから見えないのではありませんか?もしそうなら、プライベートパッケージとエクスポートされないパッケージの違いは何ですか?

OSGiinActionと「OSGiとApacheFelix3.0-初心者向けガイド」を読みましたが、違いを見つけることができませんでした。

4

2 に答える 2

27

違いはありません。

にリストされていないパッケージはExport-Packageすべてプライベートです....それだけです。

と呼ばれる別のヘッダーを見たことがあるかもしれませPrivate-Packageん。これはOSGiヘッダーではなく、OSGiフレームワークによって完全に無視されます。これが表示されている場合は、バンドルがbndでビルドされているか、このヘッダーを使用するMavenバンドルプラグインにビルド時の命令があることを示しています。したがって、ビルド時にのみ関連し、実行時には何の影響もありません。

于 2012-12-14T14:20:14.747 に答える
21

はい、manifest.mfエントリで定義されていないすべてのパッケージExport-Packageはプライベートパッケージです。個別に指定する必要はありません。コミュニケーションを容易にするための別の用語です。

internalたとえばmaven-bundle-pluginによってマニフェストが生成されている場合、mavenバンドルプラグインはデフォルトで、たとえば呼び出されたパッケージ(またはそのサブパッケージ)を除くすべてのパッケージをエクスポートするため、この用語はもう少し関連性があります。プライベートパッケージを指定し、エクスポートされたパッケージを計算するため、これはどういうわけか逆のアプローチです。詳細については、Mavenバンドルプラグインを参照してください。

于 2012-12-14T13:16:06.783 に答える