2017-08-01 6 views
0

私はdropinsフォルダの中に1つの耳を配置しました。そして、耳のwarファイルの1つは、フォルダの外側にあるjarを参照しています(Shared-> config-> lib-> global) 。私はグローバルなフォルダを保ち、外部のjarファイルは再び耳に常駐し、私は「java.lang.NoClassDefFoundErrorの」NoClassDefFoundError:Web Sphereのリバティープロファイル

を取得しています。この時間は、あなたが参照を与える方法を提案してくださいすることができますいくつかのjarファイルを参照しています。

のserver.xml

+0

見つかりませんか?行方不明のクラスはどのような瓶に入っていますか? –

+0

グローバルとフィルタの両方にセクションを含めることはできますか? –

答えて

1

共通の共有ライブラリは、アプリケーションバイナリからクラスをロードすることはできません。共通ライブラリを使用する場合は、それらを一方向の接続と考えることができます。 アプリケーションのクラスローダーは、共通の共有ライブラリに委譲できますが、それ以外の方法はありません。

共通ライブラリは、すべての依存関係を含む必要があるように、独自のクラスローダーとして実装されます。

一方、プライベートライブラリのクラスパスはアプリケーションクラスローダーのクラスパスに追加されているため、アプリケーションによって提供されるクラスをロードすることはできますが、これは良い方法ではありません。たとえば、プライベートライブラリがapplication1が提供するClassAに依存する場合、それはapplication1に対してうまく動作しますが、Class2を提供しない可能性があるapplication2を破損する可能性があります(互換性のないバージョンを提供する可能性があります)。

共有ライブラリにアプリケーションのクラスに依存するクラスがある場合は、それらのクラスをすべて共有ライブラリに入れるか、すべての共有ライブラリクラスをアプリケーション(またはWARなど)に入れることをお勧めします)。私は個人的に後者を好みます。自己完結型アプリケーションは移植性が高く、クラスローダー/依存性の問題に遭遇する可能性は低いです(app1には依存性のあるバージョンXが必要ですが、app2にはバージョンX + 5が必要です)。このことができます

希望、 アンディどのクラスを

関連する問題