免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
1.エラー
SLF4J:クラスパスには、複数のSLF4Jバインディング含ま
記事はlogback競合とのlog4jです。私はすべてのpom.xmlファイルをチェックします。いいえlog4jの依存性はありません。起動時には、複数のSLF4Jの結合ことがわかっ報告します。プロジェクトの実際の使用はlogbackです。なぜまだlog4jのを見に行きますか???
問題が解決されました。図に示すように。もはやレポート複数のエラーにバインドされません。
2.エラーの原因
この問題の根本的な原因は、複数のSLF4Jを結合するプロジェクトの存在です。これは疑いを超えています。
しかし、問題は、なぜSLF4Jも2つのバインディングを見つけるだろう、参照logbackを指定し、log4jのを参照していませんでした文の中で我々のプロジェクトのいくつかのモジュールでポンポンファイル、ありますか?
答えは間違いです:あなたは明示的な参照を持っていないので、それは密かああ引用された場所に確かにあります。座標のMavenのjarパッケージが参照するあなたは、競合ジャーパッケージが存在しなければなりません。
図に示すように。私たちのプロジェクトでは、コアモジュールは、次の座標を追加します。
<dependencies>
<dependency>
<groupId>com.github.wenweihu86.raft</groupId>
<artifactId>raft-java-core</artifactId>
<version>1.8.0</version>
</dependency>
</dependencies>
座標。リリースされたときに、特定の結合SLF4Jが一緒にパッケージプロジェクトパッケージので、それは内部に、log4jのjarファイルのパッケージが含まれています。
3.ソリューション
上記プラス座標<除外>タグ。ラベル名は示唆して何かを除外することです。
<!--exclude log4j in raft-brpc-core-->
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
</exclusions>
座標が、それらに自動的に現在のプロジェクトから削除これらのMavenのjarパッケージをMavenのjarファイルのパッケージを除外するためにどの後、図から分かります。