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