1

私はいくつかのアプリケーション用のプラグインを書いています。libA-1.0のアプリケーションhavaライブラリの依存関係と私のプラグインがlibA-2.0の同様の依存関係を持っていると仮定しましょう。バージョンが異なり、相互に互換性がありません(つまり、APIメソッドのシグネチャが異なります)。

プラグインがlibA-1.0からクラスをロードしないようにする方法(またはlibA.2.0からのクラスを使用するようにプラグインを強制する方法)?

カスタムクラスローダーを記述せず、forName、loadClassDefinition呼び出しを使用せずにこれを行う方法はありますか?

一部のライブラリを*.warアーカイブに配置し、Webコンテナがクラスパスに「同じ」ライブラリを持っているためにそれらがロードされない場合にも、同様の問題が発生します。

助けてくれてありがとう。

よろしく、Paweł

4

1 に答える 1

0

OSGIは、すぐに使用できるこの機能を提供します。同様の機能を提供するプラグイン フレームワークが他にもいくつかあると思います。

別のjarからクラスをロードする多くの機能を提供できるURLClassLoaderがあります。作業を行っているスレッドのクラスローダーを変更するには、ある程度の努力が必要です。手元に例がありません。具体的な例が必要な場合は、作成する必要があります(検索エンジンで見つけられない限り)

于 2012-07-26T09:31:37.910 に答える