web-dev-qa-db-ja.com

MavenとSpring Bootのクラスパスでlog4j-over-slf4j.jarとslf4j-log4j12.jarの両方が検出されました

この問題の解決方法がわかりません。ご覧になって、可能であれば解決方法を教えてください。これが私のpom.xmlファイルです。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.1.5.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-Tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.Apache.Tomcat.embed</groupId>
        <artifactId>Tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>


    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
    </dependency>
    <dependency>
        <groupId>org.neo4j</groupId>
        <artifactId>neo4j-cypher-compiler-2.1</artifactId>
        <version>2.1.2</version>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-Java-sdk</artifactId>
        <version>1.8.9.1</version>
    </dependency>

    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>15.0</version>
    </dependency>
    <dependency>
        <groupId>org.neo4j</groupId>
        <artifactId>neo4j-cypher-compiler-2.0</artifactId>
        <version>2.0.3</version>
    </dependency>

    <dependency>
        <groupId>org.neo4j</groupId>
        <artifactId>neo4j-cypher-compiler-1.9</artifactId>
        <version>2.0.3</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j</artifactId>
    </dependency>


</dependencies>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <start-class>com.bluepi.util.backup.glacier.Application</start-class>
    <Java.version>1.7</Java.version>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>

        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <useSystemClassLoader>false</useSystemClassLoader>
            </configuration>
        </plugin>
    </plugins>
</build>

基本的に次のエラーが発生します。

StackOverflowErrorを横取りして、クラスパスでlog4j-over-slf4j.jarとslf4j-log4j12.jarの両方を検出しました。

詳細については http://www.slf4j.org/codes.html#log4jDelegationLoop も参照してください。

11
Pranjut

Pom.xmlに移動し、下部のタブで「依存関係の階層」タブをクリックします。そこからlog4j-over-slf4jを検索します。この依存関係のすべてのインスタンスを除外します(インスタンスを右クリックして、「Mavenアーティファクトを除外」)。 log4j-over-slf4jが表示されなくなって再保存されたら、プログラムを実行してみてください。それでも機能しない場合は、行った変更を元に戻し(最初にpom.xmlをバックアップすることをお勧めします)、slf4j-log4j12のすべてのインスタンスを除外します。

Apache Stormで作業しているときにも同じ問題が発生しました。 。 。一方が機能し、もう一方が機能しない理由は、ストームコアの依存関係に「exclude log4j-over-slf4j」を追加したにもかかわらず、Stormが実行時にlog4j-over-slf4jを取り込む方法です。

28
Daniel Epstein