投稿で解決策が見つからなかったため、この投稿を開いています: 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 を参照してください。
添付のリンクで、[ファイル]-> [プロジェクト構造]-> [アーティファクト]に移動して、エラーを確認することをお勧めしました。これは私が見るものです:
また、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>
エラーを見つけるのを手伝ってくれませんか?
多分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 を参照してください。
これを行います:
プロジェクトでjarがクラックされた可能性があります。デバッグモデルの詳細で確認してください。この問題も発生しました。デバッグモデルを使用してビルドすると、次の警告が表示されます。
/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar
、それを削除して、再度ビルドします。問題は解決しました。
ログAPIと、2つの異なる実装slf4j-log4j12
およびslf4j-simple
を提供しています。同じ問題が発生しましたが、私の場合、クラスパスから「1つ削除」するように求めるエラーメッセージが表示されました。
依存関係からslf4j-simple
またはslf4j-log4j12
のいずれかを削除して、プロジェクトをクリーンアップして再度ビルドしてみてください。