依存関係が次の2つのjarを取り込むWebアプリケーションがあります。
wARをパッケージ化すると、これらの両方がWEB-INF/libディレクトリにあります。私の質問は、アプリケーションが実行されていることと、両方のjarに同じクラスがあり、問題があるはずなので、なぜ問題が発生しないのかということです正しい?
Javaでは、提供するクラスのバージョンの数は関係ありません。デフォルトのクラスローダーは、見つけることができるクラスパス上の最初のクラスローダーを選択します。
エラーなしでアプリケーションを実行できるため、これは次のいずれかを意味します。
javassist-3.9.0.GA.jarがクラスパスの最初にある場合:アプリケーションはjavassist-3.20.0-GA.jarの新しいAPIまたはバグ修正に依存しません。また、このライブラリで使用したAPIはこれらのバージョン間で変更されません(ライブラリはマイナーバージョン間ですべきではありません)
javassist-3.20.0-GA.jarがクラスパスの最初にある場合:ライブラリは後方互換性があります
私は提案します:
「それを修正する方法はありますか?」 依存関係ツリーを使用した競合の解決 をご覧ください。コマンドmvn dependency:tree
依存関係の原因を知ることができます。 javassistに依存するアーティファクトがわかっている場合は、除外エントリを追加して、javassistバージョンの1つを回避できます。