どちらもosgiのパッケージ依存関係を解決しますそれらの違いは何ですか
2 に答える
VM 内の一部のコードは、アプリケーション クラス ローダーが com.sun.* クラスを認識できると想定しているため、ブート委任は必要なハックです。OSGi では、これは明らかに当てはまりません。ブート委任は、フレームワークがブート クラスパスでルックアップを実行できるパッケージを指定するパラメーターです。これはモジュール化されていないため、実行しないでください。フレームワークに対してグローバルです。
DynamicImport-Package は似ていますが、それが定義されているバンドルに対してのみ、エクスポートされたパッケージに対してのみです。通常のバンドル コンテンツまたは Import-Package でパッケージが見つからない場合、DynamicImport-Package は、エクスポートされたパッケージのセットで検索できるパッケージのパターンを指定します。この考え方はクラスパスに似ています。取得するバージョンがわかりません。パッケージが見つかると、それは永久に使用されます。ただし、見つからない場合は、すべてのアクセスが検索を続けます。つまり、バンドルを再起動せずに、事後にパッケージをインストールできます。
DynamicImport-Packageを介してインポートされたパッケージは、パッケージのクラスが必要になるたびに解決されます。したがって、解決プロセスのためにパッケージが利用できない場合でも、失敗することはありません。このようにして、実行時にClassNotFoundExceptionsがスローされる可能性があります。(これをオプションのインポートと比較してください)
BootDelegationクラスは、OSGiフレームワークをJVMにロードするクラスローダーであるbootdelegationクラスローダーからロードされ ますhttp://wiki.osgi.org/wiki/Boot_Delegation http://www2.sys-con.com/itsg /virtualcd/java/archives/0808/chaudhri/index.html http://de.slideshare.net/honnix/osgi-class-loading