ライブラリ B に依存する Web アプリケーション A があり、ライブラリ B はライブラリ C を使用します。A、B、および C はすべて Maven プロジェクトです (A は a war
、B および C はjar
s です)。
A をアプリケーション コンテナーにデプロイすると、B 内のクラスのメソッドが呼び出され、ライブラリ C 内のクラス D が参照されます。
その時点で、NoClassDefFoundError
for D を取得します。D は、パッケージjava.sql
と を使用 (インポート) しますorg.slf4j
。
私は次の仮説を調査しましたが、どれも真実ではありませんでした。
- C の異なるバージョンが使用されます。この仮説を除外するために
mvn dependency:tree
、A のディレクトリを調べたところ、C への参照が 1 つだけ見つかりました。 - C は
war
A のファイルに含まれていません。ファイルを開くtarget\A.war\WEB-INF\lib\C.jar\
と、D のクラス ファイルが正しい場所に存在していました (つまり、この仮説は正しくありません)。
このエラーを修正するにはどうすればよいですか?