1. ホーム
  2. java

[解決済み] SLF4J: クラス "org.slf4j.impl.StaticLoggerBinder" の読み込みに失敗しました。

2022-03-06 18:29:41

質問

私のアプリケーションは、tcServer と WebSphere 6.1 の両方にデプロイされる予定です。このアプリケーションはehCacheを使用しているため、依存関係としてslf4jを必要とします。 その結果、私はslf4j-api.jar(1.6)jarを私の戦争ファイルのバンドルに追加しました。

tcServerでは、以下のエラーを除き、アプリケーションは正常に動作しています。

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.

しかし、WebSphereでデプロイすると java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder .

も添えられています。 Failed to load class "org.slf4j.impl.StaticMDCBinder"

両方のアプリケーションサーバーのクラスパスを確認しましたが、他のslf4j jarは存在しません。

どなたか、この現象について心当たりのある方はいらっしゃいますか?

解決方法は?

WebSphere 6.1でも同じような問題がありました。Cekiが指摘したように、WebSphereが使用している大量のjarがあり、そのうちの1つが古いバージョンのslf4jを指していたのです。

No-Opフォールバックはslf4j -1.6以上でのみ発生するので、それより古いものは例外を投げ、デプロイメントを停止させます。

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

Mavenを使用する場合は、以下の依存関係を追加してください。 ${slf4j.version} 存在 slf4j の最新バージョン

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>${slf4j.version}</version>
</dependency>

これで私の問題は解決しました。