共通の共有ライブラリは、アプリケーションバイナリからクラスをロードすることはできません。共通ライブラリを使用する場合は、それらを一方向の接続と考えることができます。 アプリケーションのクラスローダーは、共通の共有ライブラリに委譲できますが、それ以外の方法はありません。
共通ライブラリは、すべての依存関係を含む必要があるように、独自のクラスローダーとして実装されます。
一方、プライベートライブラリのクラスパスはアプリケーションクラスローダーのクラスパスに追加されているため、アプリケーションによって提供されるクラスをロードすることはできますが、これは良い方法ではありません。たとえば、プライベートライブラリがapplication1が提供するClassAに依存する場合、それはapplication1に対してうまく動作しますが、Class2を提供しない可能性があるapplication2を破損する可能性があります(互換性のないバージョンを提供する可能性があります)。
共有ライブラリにアプリケーションのクラスに依存するクラスがある場合は、それらのクラスをすべて共有ライブラリに入れるか、すべての共有ライブラリクラスをアプリケーション(またはWARなど)に入れることをお勧めします)。私は個人的に後者を好みます。自己完結型アプリケーションは移植性が高く、クラスローダー/依存性の問題に遭遇する可能性は低いです(app1には依存性のあるバージョンXが必要ですが、app2にはバージョンX + 5が必要です)。このことができます
希望、 アンディどのクラスを
見つかりませんか?行方不明のクラスはどのような瓶に入っていますか? –
グローバルとフィルタの両方にセクションを含めることはできますか? –