0

Eclipse Indigo を使用して Maven プロジェクトを実行したいのですが、プロジェクトを実行するとRun As->Maven Install、最初は次のように赤い色でメッセージが表示されます。

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.

私はそれについて調査し、後でslf4jの依存関係も欠落していることに気付きました。slf4j-1.7.5.zipをダウンロードし、次のファイルをC:\Program Files\Java\jdk1.7.0_17\libに抽出します。

slf4j-simple-1.7.5.jar、slf4j-api-1.7.5.jar、log4j-over-slf4j-1.7.5.jar 。

また、POM.xmlに依存関係を追加すると、pom.xmlは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.beginningee6.book</groupId>
    <artifactId>chapter10</artifactId>
    <packaging>war</packaging>
    <version>2.0</version>
    <name>Chapter 10 - JSF</name>

    <parent>
        <groupId>org.beginningee6.book</groupId>
        <artifactId>chapters</artifactId>
        <version>2.0</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>javax.persistence</artifactId>
            <version>${javax.persistence-version}</version>
        </dependency>
        <dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>1.7.5</version>
   <scope>compile</scope>
</dependency>

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

        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>eclipselink</artifactId>
            <version>${eclipselink-version}</version>
        </dependency>
        <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>${jsf-version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>javax.ejb</artifactId>
            <version>${glassfish-version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derbyclient</artifactId>
            <version>10.6.2.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
            <version>10.6.2.1</version>
            <!--<scope>test</scope>-->
        </dependency>
        <dependency>
            <groupId>org.glassfish.extras</groupId>
            <artifactId>glassfish-embedded-all</artifactId>
            <version>3.1.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

最終的に、プロジェクトを更新して再度実行しても、同じメッセージが表示されます。

どんな助けでも大歓迎です。

4

2 に答える 2

3

まず、slf4j-api が log4j-over-slf4j 依存関係にバンドルされている限り、slf4j-api の依存関係を削除する必要があります。Dependency Hierarchy タブ (pom.xml 内) を確認すると、log4j-over-slf4j の下に slf4j-api が表示されます。

さらに、これらのファイル (slf4j-simple-1.7.5.jar、slf4j-api-1.7.5.jar、および log4j-over-slf4j-1.7.5.jar) を lib フォルダーに追加する必要はありません。 pom.xml でそれらを提供する限り。Maven は、pom.xml にリストされているすべての依存関係と、システムのクラスパスでアプリケーションに必要なすべての jar を自動的に追加します。

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

第 2 に、依存関係を提供しても SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder" が表示される限り、これは m2e バグに直面していることを意味します。

バンドルされている Maven バージョン (m2e) を使用している場合、Eclipse Juno および Indigo は、メッセージSLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder" を抑制しません。この動作は、m2e バージョン 1.1.0.20120530-0009 以降から存在します。

ただし、これはエラーとして示されますが、ログは正常に保存されます。強調表示されたエラーは、このバグが修正されるまで引き続き表示されます。詳細については、m2e サポート サイトを参照してください。

現在利用可能な解決策は、バンドルされたバージョンの Eclipse ではなく、外部の Maven バージョンを使用することです。この解決策とこのバグに関する詳細については、以下の質問で見つけることができます。これは、あなたが直面している同じ問題を説明していると思います。

SLF4J: クラス "org.slf4j.impl.StaticLoggerBinder" のロードに失敗しました。エラー

于 2013-05-06T18:26:02.557 に答える
0

この警告メッセージは、Maven ビルド プロセスにのみ影響します。お申し込みには影響ありません!したがって、この警告を無視したい場合は、Maven (おそらく Eclipse に統合されているもの) で強制的に SLF4J を使用する必要があります。

于 2013-05-05T22:34:18.427 に答える