1

ライブラリ 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

私は次の仮説を調査しましたが、どれも真実ではありませんでした。

  1. C の異なるバージョンが使用されます。この仮説を除外するためにmvn dependency:tree、A のディレクトリを調べたところ、C への参照が 1 つだけ見つかりました。
  2. C はwarA のファイルに含まれていません。ファイルを開くtarget\A.war\WEB-INF\lib\C.jar\と、D のクラス ファイルが正しい場所に存在していました (つまり、この仮説は正しくありません)。

このエラーを修正するにはどうすればよいですか?

4

1 に答える 1