私は OSGi で正常に動作するフレームワーク モジュールをたくさん持っています。すべてのサービスとコンポーネントは互いに検出され、正常に動作しています。
ただし、クラスに関して動的なことを行うフレームワークが 1 つあります。基本的に、ある時点でクラス名を付けて Class.forName() を実行すると、リフレクション マジックが発生します。
これは、標準のjvmで実行し、SPIを使用してフレームワークを接続する場合にうまく機能しますが、フレームワークを介してアプローチしようとしているランダムクラス「test.MyTest」がフレームワークに表示されないため、OSGiでは失敗します。
「java.lang.ClassNotFoundException: test.MyTest がフレームワークで見つかりません」がスローされます。
だから私の質問: すべてを見る必要があるフレームワークのこの可視性の欠如をどのように解決できますか? Import-Package: *
?
アップデート
OSGi がこの面で 2010 年以来あまり変わっていないと仮定すると、記事http://njbartlett.name/2010/08/30/osgi-readiness-loading-classes.htmlは非常に興味深いものです。私は現在、積極的に登録するクラスと、OSGi 経由で注入されるドメイン ファクトリの両方のサポートを追加しました。
それとは別に、デフォルトの解決ではコンテキストクラスローダーが使用されるため、他のすべてが失敗した場合は、クラスのロードを試行するために使用されます。
アップデート
提案されたサポートも追加しましたDynamicImport-Package
。これは、小規模なプロジェクトの方が簡単です。