依存関係ツリーと複数のSLF4Jバインディングに問題があります。私がこれまでに発見したことは、通常これは警告を引き起こすだけですが、私の場合は私のプログラムの実行を妨げるようです:これらは私が得る例外です:
SLF4J:クラスパスには複数のSLF4Jバインディングが含まれます。 SLF4J:[jar:file:/ C:/Users/FischerNi/.m2/repository/org/slf4j/slf4j-jdk14/1.5.3/slf4j-jdk14-1.5.3.jar!/ org/slf4j /にバインディングが見つかりましたimpl/StaticLoggerBinder.class] SLF4J:[jar:file:/ C:/Users/FischerNi/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jarにバインディングが見つかりました!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J:説明については http://www.slf4j.org/codes.html#multiple_bindings を参照してください。 SLF4J:slf4j-api 1.6.x(以降)はこのバインディングと互換性がありません。 SLF4J:バインディングはバージョン1.5.5以前です。 SLF4J:バインディングをバージョン1.6.xにアップグレードします。または2.0.xスレッド「main」の例外Java.lang.NoSuchMethodError:org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg/slf4j/impl/StaticLoggerBinder;
これは私の依存関係の関連部分です:net.lightbody.bmp browsermob-proxy 2.0-beta-8
<!-- LOGGING DEPENDENCIES - LOG4J -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
誰かがこの問題を解決する方法を教えてもらえますか?
これにはいくつかの解決策があります。
プロジェクトが他のプロジェクトに依存しており、他のプロジェクトが異なるバージョンのslf4jを使用している場合は、excusionを使用してみてください
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
Fatehからの答えは正しいです。私はそれを使用する方法を理解するために時間を費やさなければならなかったので、完全なソリューションを追加しています。
実行mvn dependency:tree
slf4jを使用しているライブラリを確認します。
[INFO] +- net.lightbody.bmp:browsermob-proxy:jar:2.0-beta-8:compile
[INFO] | +- org.slf4j:slf4j-jdk14:jar:1.7.25:compile
次のようにMavenから除外します。
<dependency>
<groupId>net.lightbody.bmp</groupId>
<artifactId>browsermob-proxy</artifactId>
<version>2.0.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
</exclusion>
</exclusions>
</dependency>
代わりに、Mavenで次の依存関係を使用することをお勧めします。
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
Slf4jを使用して依存関係を増やしていますが、これで問題が解決しました。
クラスパスで複数のバインディングが使用可能な場合、使用するバインディングを1つだけ選択し、他のバインディングを削除します。
「org.slf4j」または「log4j2」の明示的に追加された依存関係を削除してみてください。
これは、複数のjarがある場合に発生します。 jarがすでに使用可能かどうかを確認するには、プロジェクト-> Java resources-> maven依存関係に移動し、jarがすでに使用可能かどうかを確認します。次に、.m2\resourcesフォルダーでそのjarファイルの場所を見つけ、そのjarファイルに関連する完全なフォルダーを削除してから、新しいバージョンをダウンロードしてプロジェクトにインポートします。
Pom.xmlファイルに正しいバージョンの正しいjarファイルをダウンロードしていても、エラーが発生する場合があります。それから、pom.xmlからそれを削除し、Googleからそのjarをダウンロードして、プロジェクトにインポートする必要があります。それを行う場合は、プロジェクトプロパティ->デプロイメントアセンブリタブ->追加->をクリックすることを忘れないでくださいJavaビルドパスエントリとそのjarファイルをクリックして、[適用]をクリックします。