SLF4J: クラス「org.slf4j.impl.StaticLoggerBinder」のロードに失敗しました 質問する

SLF4J: クラス「org.slf4j.impl.StaticLoggerBinder」のロードに失敗しました 質問する

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

次のエラーを除き、アプリケーションは 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 はありません。

ここで何が起こっているのか、誰か分かる人はいますか?

ベストアンサー1

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>

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

おすすめ記事