SLF4J:クラス「org.slf4j.impl.StaticLoggerBinder」の読み込みに失敗しました。エラー


115
  • Eclipse IDEインディゴジュノケプラー(32ビットおよび64ビットバージョン))
  • プラットフォームWindowsUbuntuMac
  • M2eバージョン1.1.0.20120530-00091.2.0.20120903-10501.3.0.20130129-0926
    1.4.0.20130601-0317

一般的な情報

上記のエラーは、m2eをバージョン1.1にアップデートした後に発生しました。m2e 1.1を削除し、m2e 1.0にロールバックすることで、すべてが正常に機能しました。WindowsとUbuntuで問題を再現しようとすると、まったく同じエラーが発生しました。slf4j-apiおよびlogbackの多数の構成がテストされましたが、どれも機能していないようです。

このエラーは、slf4jの依存関係を宣言していなくても、どのMavenプロジェクトで発生します。

  • 新しいMavenプロジェクト-> maven-archetype-quickstart

    そして

  • 新しいMavenプロジェクト->アーキタイプを選択しないシンプルなプロジェクト

    結果に

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

テスト環境と構成

MacではEclipse IndigoおよびEclipse Juno(32ビットと64ビットの両方)、Ubuntuでは32ビット、Windowsでは64および32ビットでテスト済み。Juno ClassicJunoモデリングツールKepler StandardKeplerモデリングツールのテスト済みの新規インストールしたところ、同じエラーが発生しました。

エラーは、cleaninstalltestdeploygenerate-sourcesvalidatecompilepackageintegration-testverify、および目標cleanと残りの目標の組み合わせで表示されます。パラメータ-e-Xも表示されます。m2eリポジトリーを削除して最初からダウンロードしようとしたが、成功しなかった。3つの異なるマシンでテストされ、上記のすべてのシステムで仮想ボックスがテストされましたが、同じエラーが発生しました。

slf4j-apilogback-coreの依存関係を解決するすべての異なるlogback構成(1.0.4から1.0.13まで)を試してみましたが、すべて同じエラーが発生しました:

<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version></version>
</dependency>

すべての異なる(1.6.1から1.7.5に)slf4j-simple構成を試しました

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

すべての異なる(1.6.1から1.7.5への)log4j-over-slf4j構成を試しました

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>log4j-over-slf4j</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

すべての異なる(1.6.1から1.7.5に)slf4j-jdk14構成を試しました

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-jdk14</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

すべての異なる(1.6.1から1.7.5に)slf4j-log4j12構成を試しました

<dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-log4j12</artifactId>
     <version></version>
     <scope>compile</scope>
</dependency>

slf4j-nop 1.7.5構成を試しました

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-nop</artifactId>
  <version>1.7.5</version>
  <scope>compile</scope>
</dependency>

最後になりましたが、エラーにもかかわらず、ログは保存および印刷されます。


エラーを再現する方法

  • Eclipse Juno、IndigoまたはKepler 32または64ビットをダウンロードします(すべてのインストールで同じエラーが発生します)。

    • m2eをインストールする-Maven Integration for Eclipse

      または

    • m2eバージョンを1.1.0.20120530-0009、または1.2.0.20120903-1050、または1.3.0.20130129-0926、または1.4.0.20130601-0317に更新します)


    • 「ファイル」->「新規」->「その他」->「Mavenプロジェクト」->
      「次へ」->「カタログからmaven-archetype-quickstartを選択」->「終了」を選択します。

      または

    • [ファイル]-> [新規]-> [その他]-> [Mavenプロジェクト]-> [次へ]をクリックします-> [単純なプロジェクトの作成(アーキタイプの選択をスキップ)]を選択します。

  • プロジェクト-> Runs As->クリーンインストール(または上記の他の目標)を右クリックします。

コンソールの最初の行は

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

PS既存のプロジェクトは1.1.0.20120530-0009へのM2eバージョンを更新した後、同じエラーが生成されます 1.2.0.20120903-1050 1.3.0.20130129-0926 1.4.0.20130601-0317


アップデート

編集

m2eサポートサイト:

  • 上記の質問はm2eサポートサイトのバグとして投稿されたもので、Igor Fedorenkoからの回答は

    このメッセージを抑制する即時の計画はありません。

    上記のバグを表示するには、m2e公式サポートサイトを参照してください。


編集2

  • 上記のエラー表示は、m2eバージョン1.2.0.20120903-1050に存在します。


編集3

  • 上記のエラー表示は、m2eバージョン1.3.0.20130129-0926に存在します。


編集4

  • 上記のエラー表示は、m2eバージョン1.4.0.20130601-0317に存在します。


編集5

                              ***Reported FIXED***

@EliranMalka長いですが理由があります。人々が同じ質問をするのを避け、同じ問題に直面しているかどうかを理解するために必要と思われるすべての詳細を含めることを助けることは、私にあまり多くの選択肢を与えませんでした。:-)
Konstantinos Margaritis

Neo4jで使用スプリングデータにしようとしているときに私は私が持っているこのエラーを得たslf4jの両方にslf4j-api-1.7.7jcl-over-slf4j-1.7.7、私はそれらのいずれかを削除しようとする場合、私は彼らのことを言って、エラーメッセージを取得するLoggerクラスが欠落しています。私は何をすべきか?
user1885868 2015年

@KonstantinosMargaritis pom.xmlでこれを修正する方法を教えてください、ローカルセットアップで機能させることができますが、jenkinsでは常に失敗します。
vikramvi 2016年

現在のセットアップ@vikramviは何ですか?
Konstantinos Margaritis 2016年

@KonstantinosMargaritisこれに戻ってくれてありがとう。私はmavenがLinuxの3.0バージョンであることを認識し、最新バージョンにアップグレードして再試行しました。これで問題が解決しました。しかし、何が悪いのかを見つけるために一日中費やす必要がありました。とにかく、ありがとう。
vikramvi 2016年

回答:


75

このエラーも確認できます。

回避策:埋め込まれたmavenではなく、m2eclipse内で外部mavenを使用することです。

これは3つのステップで行われます。

1 ローカルマシンにmavenをインストールします(テストマシンはUbuntu 10.10でした)

mvn --version

Apache Maven 2.2.1(rdebian-4)Javaバージョン:1.6.0_20 Javaホーム:/ usr / lib / jvm / java-6-openjdk / jreデフォルトロケール:de_DE、プラットフォームエンコーディング:UTF-8 OS名: "linux"バージョン:「2.6.35-32-generic」アーチ:「amd64」ファミリー:「unix」

2 コンソールからmavenを実行する方法を外部に リンクしてmavenを実行する

> cd path-to-pom.xml
> mvn test
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Simple
    [INFO]    task-segment: [test]
    [INFO] ------------------------------------------------------------------------
    [...]
    [INFO] Surefire report directory: [...]/workspace/Simple/target/surefire-reports
    
    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running net.tverrbjelke.experiment.MainAppTest
    Hello World
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 sec
    
    Results :
    
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    [INFO] ------------------------------------------------------------------------
    [...]

3 m2eclipseの内部:組み込みMavenからローカルMavenに切り替える

  • ローカルのmavenホームインストールディレクトリがどこmvn --versionにあるかを確認します(または、あなたの場合はgoogle MAVEN_HOME、私にとってこれは私助けてくれまし/usr/share/maven2
  • 日食メニュー->ウィンドウ->設定-> Maven->インストール->にその文字列を入力します。次に、新しい外部mavenに切り替えたはずです。
  • 次に、プロジェクトを「maven test」などとして実行します。

エラーメッセージは表示されなくなります。


1
迷惑なエラーを回避するための唯一の回避策であるので、私はあなたの答えを受け入れます。分析的な回答をありがとうございました。:) ..
Konstantinos Margaritis

3
うーん、私はWindowsを使用していて、新しい外部インストールに変更しましたが、エラーはまだ存在します!?
stefan.at.wpf 2013年

4
申し訳ありませんが、動作します。実行構成にはMavenランタイム(内部/外部)のオプションがあることに注意してください。保存したものを使用する場合は、必ず更新してください。
stefan.at.wpf 2013年

@ stefan.at.wpfうまくいくと聞いて良かったです。必要に応じて、バグのメーリングリストに登録して、何か変更があった場合に通知を受けることができます。
Konstantinos Margaritis

2
私にとって#mvn --versionは、MAVEN_HOMEを表示すると便利です。
biaobiaoqi 2013年

25

これを解決するためのドキュメントがSLf4Jサイトにあります。私はそれに従って、すでに持っていたslf4j-api-1.6.1.jarとともにslf4j-simple-1.6.1.jarをアプリケーションに追加しました。これで私の問題は解決しました

slf4j


4
これは機能し、mavenでは次を追加できます。あなたのバージョン
Enrique SanMartín

@Mohammed Irfanは、このtwojarをeclipseのlibsフォルダーに追加する必要がありますか?
Erum

1
私はそれ以降のバージョンのMavenを使用しており、上記の手順を実行していましたが、これが問題の原因となった答えでした-ありがとう:)
Rob Wilson

15

Gradleを使用している場合は、これを追加します。

dependencies { 
... 
compile "org.slf4j:slf4j-simple:1.7.9" 
... 
}

Gradleで動作します!! そのライブラリを追加するとどうなるか説明していただけますか?
フェリペペレイラ

5

Gradleと同じ結果で同様のエラーがあり、次のようにしてそれを解決することができました:

//compile 'org.slf4j:slf4j-api:1.7.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.1'

コメントアウトされた行は、エラー出力を引き起こした行です。これをMavenに転送できると思います。


3

Maven依存関係ファイルでバージョンを指定していないため、最新のjarが選択されない可能性があります。
また、slf4j-log4j12アーティファクトIDを持つ別の依存関係が必要です。
これをpomファイルに含めます

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

エラーがまだ解決しない場合
は、このリンクを表示することをお勧めします


3
記載されているすべてのバージョンがチェックされました。繰り返しを避けるため、ここでは宣言しませんでした。タグは意図的に空のままにされました。上記の問題はm2eサポートサイトのバグとして投稿されたものであり、m2e開発者によって抑制されない限り、上記のエラーを解決する方法はありません。私は何度もウェブサイトを読み、問題を解決できる可能性のあるすべてのライブラリを含めました。残念ながら、宣言された依存関係ではなくm2eと関係があるため、構成は機能しませんでした。上記のエラーは、MavenコンソールまたはEclipseのNetbeans.ONLYでは表示されません。
Konstantinos Margaritis

1
slf4j-log4j12は、slf4j-simple、slf4j-jdk14、およびlogback-classicと一緒のもう1つのバインディングです。上記の依存関係のいずれかにより、バインディングの問題が解決されているはずです。前に説明したように、問題はm2eにあります。とにかくありがとう。
Konstantinos Margaritis

3

このコードをpom.xmlファイルに貼り付けます。わたしにはできる。

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>

「org.slf4j.impl.StaticLoggerBinder」エラーを解決しますが、すべてをログに記録しています。log4j.xmlとlog4j.propertiesを(一度に1つずつ)src / test / resourcesに配置しました。これで、プロジェクトのすべてのフレームワークがログに記録されます。自分のログ以外の大量のメッセージ。
OJVM

1

それが表面化したため、問題を見逃していた。これは同じ問題を抱えてここに来た他の人にとっては良い読みになると信じています:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=387064


リンクだけでなく、完全な回答を入力してください。
slfan 2014

@Prince質問の​​説明を読むと、「上記のバグを表示するには、m2e公式サポートサイトを参照してください」という部分が見つかります。これは、言及したURLを指します。
Konstantinos Margaritis 14

おっと。心よりお詫び申し上げます。
王子

1

Eclipse Lunaで実行されているSpring Boot-Gradleアプリケーションにも同様の問題がありました。プロジェクトの.classpathにエントリを手動で追加することで解決できます

<classpathentry sourcepath="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/3150039466ad03e6ef1c7ec1c2cbb0d96710cf64/slf4j-simple-1.7.7-sources.jar" kind="lib" path="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/8095d0b9f7e0a9cd79a663c740e0f8fb31d0e2c8/slf4j-simple-1.7.7.jar"/>

この解決策に従うことがアイデアです。ただし、実装方法はケースツーケースによって異なります。修正方法の1つは、上記で使用した方法です。

お役に立てれば。


0

これはエラーメッセージではなく警告です。それは彼らのウェブサイトで非常に明確に説明されています:

この警告(エラーではない)メッセージは、クラスパスでSLF4Jプロバイダーが見つからなかった場合に報告されます。slf4j-nop.jar、slf4j-simple.jar、slf4j-log4j12.jar、slf4j-jdk14.jar、またはlogback-classic.jarの1つ(および1つのみ)をクラスパスに配置すると、問題が解決します。これらのプロバイダーはslf4j-api 1.8以降をターゲットにする必要があることに注意してください。

プロバイダーがない場合、SLF4Jはデフォルトで操作なし(NOP)ロガープロバイダーになります。

https://www.slf4j.org/codes.html#StaticLoggerBinder


0

Javaを使用してKafkaプロデューサープログラムを作成するときにも同じ問題がありました。このエラーは、誤ったslf4jライブラリが原因で発生します。あなたの問題を修正する以下のslf4j-simple maven依存関係を使用してください。

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.