2013-10-29 20 views
6

私は依存ツリーと複数のSLF4Jバインディングに問題があります。 これらは、私が手例外です:私は、これまでに判明することは、通常、これは警告のみを引き起こすが、私の場合には、実行されているから、私のプログラムを防ぐように見えるということです複数のSLF4Jバインディングでエラーが発生しますか?

SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [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: Found binding in [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: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: slf4j-api 1.6.x (or later) is incompatible with this binding. SLF4J: Your binding is version 1.5.5 or earlier. SLF4J: Upgrade your binding to version 1.6.x. or 2.0.x Exception in thread "main" java.lang.NoSuchMethodError: org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg/slf4j/impl/StaticLoggerBinder;

、これが私の関連する作品です依存関係: net.lightbody.bmp browsermobプロキシ 2.0ベータ-8

<!-- LOGGING DEPENDENCIES - LOG4J --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
    </dependency> 

誰かがどのようにこの問題を解決する方法を教えていただけますか?

+0

異なるバージョン(エラーメッセージに従って1.5.3と1.6.1)で 'slf4j-log4j12'を複数回(直接または間接的に別の依存関係を介して)含めています。 – Jesper

答えて

15

はこれにソリューションのカップルがあります:あなたは、クラスパス上の異なるバージョンとそれらのカップルを持っている場合

  • は(おそらくそれ以降のバージョンで)あなたはは一つだけSLF4Jジャーが含まれていることを確認してください。
  • 複数のslf4j jarをクラスパス上にある他のjarで内部的に使用する可能性があるため、複数のslf4j jarを除外することができない場合があります。これらの依存jarは、アプリケーションを失敗させるslf4j jarの異なるバージョンを参照することがあります。そのような場合、SLF4J jarを使用して、他のjarよりも前にSLF4jの上位バージョンが入ったjarファイルが追加されていることを確認してください。これにより、あなたのJavaプログラムが明らかに下位互換性のあるSLF4Jの最新バージョンを取得することが保証されます。
+0

ありがとうございました!第二の解決策は私のために働いた。 – Biffy

+0

@Ankurそして、どうすれば最新のものを手に入れることができますか? –

+3

プロジェクトビルドパスの最初のものを指定します。プロジェクトの.classpathファイルを確認します。 jarファイルが追加される順序が表示されます。 –

1

私はSLF4Jを使用してより多くの依存関係を持っているが、これは私の問題を解決した

<dependency> 
<groupId>log4j</groupId> 
<artifactId>log4j</artifactId> 
<version>1.2.17</version> 
</dependency> 

、代わりのmavenで、次の依存関係を使用することをお勧めします。

0

プロジェクトは他のプロジェクトとは異なるバージョンと同様に他の1回の使用SLF4Jこれは、複数のjarファイルが存在する場合に発生しているexcusion

<exclusions> 
    <exclusion> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
    </exclusion> 
</exclusions> 
0

を使用しようとに依存している場合。 jarがすでに利用可能かどうかを確認するには、プロジェクト - > java resources - > mavenの依存関係に行き、JARがすでに利用可能かどうかを確認します。それが利用可能な場合でも、あなたはまだエラーが発生します。その後、.m2 \ resourcesフォルダー内のそのjarファイルの場所を探し、そのjarファイルに関連する完全なフォルダーを削除し、新しいバージョンをダウンロードしてプロジェクトにインポートします。 :)

pom.xmlファイルに適切なバージョンの正しいjarファイルをダウンロードしてもエラーが発生することがあります。それから私はpom.xmlからそれを削除し、そのjarをGoogleからダウンロードしてそれを自分のプロジェクトにインポートする必要があります。もしそれをしたら、プロジェクトプロパティ - >デプロイメントアセンブリタブ - > Java Build Path Entriesをクリックし、そのjarファイルをクリックして「適用」をクリックします。

関連する問題