web-dev-qa-db-fra.com

Détecté à la fois log4j-over-slf4j.jar ET slf4j-log4j12.jar sur le chemin de classe avec maven et spring boot

Je ne sais pas comment résoudre ce problème. Veuillez jeter un coup d'œil et si possible, laissez-moi comment le résoudre. Voici mon fichier 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>

J'obtiens essentiellement l'erreur suivante:

Détecté à la fois log4j-over-slf4j.jar ET slf4j-log4j12.jar sur le chemin de classe, préemptant StackOverflowError.

Voir aussi http://www.slf4j.org/codes.html#log4jDelegationLoop pour plus de détails.

11
Pranjut

Accédez à votre pom.xml et sur l'onglet inférieur et cliquez sur l'onglet "Hiérarchie des dépendances". De là, recherchez log4j-over-slf4j. Exclure toutes les instances de cette dépendance (cliquez avec le bouton droit sur l'instance et "Exclure l'artefact Maven"). Après avoir cessé d'apparaître log4j-over-slf4j et réenregistré, essayez d'exécuter le programme. Si cela ne fonctionne toujours pas, annulez les modifications que vous venez d'apporter (il pourrait être judicieux de sauvegarder votre pom.xml au début) et excluez toutes les instances de slf4j-log4j12.

Je rencontrais le même problème lorsque je travaillais avec Apache Storm. . . un exemple pour lequel l'un pourrait fonctionner et pas l'autre est la façon dont Storm extrait log4j-over-slf4j lors de l'exécution malgré le fait que j'ai ajouté "Exclure log4j-over-slf4j" à la dépendance Storm-core

28
Daniel Epstein