web-dev-qa-db-ja.com

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

投稿で解決策が見つからなかったため、この投稿を開いています: Failed to load class "org.slf4j.impl.StaticLoggerBinder" error

また、IntelliJでMavenプロジェクトを開き、Tomcat7プラグインでオプション「redeploy」を選択した後、次のエラーが発生しました。

SLF4J:クラス「org.slf4j.impl.StaticLoggerBinder」のロードに失敗しました。 SLF4J:デフォルトで無操作(NOP)ロガーの実装SLF4J:詳細については、 http://www.slf4j.org/codes.html#StaticLoggerBinder を参照してください。

添付のリンクで、[ファイル]-> [プロジェクト構造]-> [アーティファクト]に移動して、エラーを確認することをお勧めしました。これは私が見るものです: enter image description here

また、pom.xmlファイルに次の依存関係があります。

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.21</version>
        </dependency>

エラーを見つけるのを手伝ってくれませんか?

4
CrazySynthax

多分2つの問題があります:

  1. 依存関係のバージョンの不一致
  2. アプリケーションをデプロイするときの問題

エラーを再現するために、このミニプログラムを作成しました。

package de.so;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DemoSlf4j
{
    private static Logger logger = LoggerFactory.getLogger(DemoSlf4j.class);

    public static void main(String[] args)
    {
        logger.error("Start ...");
    }
}

pom.xmlでこれらの依存関係(使用したものと同じ)のみを使用:

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.5</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.6</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.21</version>
    </dependency>
</dependencies>

私はこれらのメッセージを持っています:

SLF4J:クラスパスに複数のSLF4Jバインディングが含まれています。 SLF4J:[jar:file:/ D:/Maven-Repo/org/slf4j/slf4j-log4j12/1.5.6/slf4j-log4j12-1.5.6.jar!/org/slf4j/impl/StaticLoggerBinder.classでバインディングが見つかりました] SLF4J:[jar:file:/ D:/Maven-Repo/org/slf4j/slf4j-simple/1.7.21/slf4j-simple-1.7.21.jar!/ org/slf4j/impl/StaticLoggerBinderでバインディングが見つかりました。クラス] SLF4J:説明は http://www.slf4j.org/codes.html#multiple_bindings を参照してください。 SLF4J:実際のバインディングのタイプは[org.slf4j.impl.Log4jLoggerFactory]です。SLF4J:slf4jバインディングによって要求されたバージョン1.5.6は、[1.6、1.7]と互換性がありません。SLF4J: http:// www。詳細については、slf4j.org/codes.html#version_mismatch をご覧ください。 log4j:WARNロガー(de.so.DemoSlf4j)のアペンダーが見つかりませんでした。 log4j:WARNlog4jシステムを正しく初期化してください。

これらの依存関係を使用すると、すべてが正常になります。バージョンを見てください!

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.21</version> <!-- or use LATEST -->
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.21</version> <!-- or use LATEST -->
    </dependency>
</dependencies>

org.slf4j:slf4j-log4j12:1.7.21の代わりにslf4j-simpleを使用している場合(本番環境での可能性が高いもの)、次のようになります。

log4j:WARNロガー(de.so.DemoSlf4j)のアペンダーが見つかりませんでした。 log4j:WARNlog4jシステムを正しく初期化してください。 log4j:WARN詳細については、 http://logging.Apache.org/log4j/1.2/faq.html#noconfig を参照してください。

これを行います:

  • ロギングフレームワーク(log4j、slf4fなど)への依存関係をカスケードする他のアーティファクトがある場合は、プロジェクトの依存関係を調べます。
  • 依存関係がTomcatに適切にデプロイされているかどうかを確認してください。 (.../WEB-INF/lib)
  • バージョンを確認してください
5
JimHawkins

プロジェクトでjarがクラックされた可能性があります。デバッグモデルの詳細で確認してください。この問題も発生しました。デバッグモデルを使用してビルドすると、次の警告が表示されます。

/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar、それを削除して、再度ビルドします。問題は解決しました。

0
user6753017

ログAPIと、2つの異なる実装slf4j-log4j12およびslf4j-simpleを提供しています。同じ問題が発生しましたが、私の場合、クラスパスから「1つ削除」するように求めるエラーメッセージが表示されました。

依存関係からslf4j-simpleまたはslf4j-log4j12のいずれかを削除して、プロジェクトをクリーンアップして再度ビルドしてみてください。

0
Nitin1706