web-dev-qa-db-fra.com

NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

J'essaie d'exécuter l'exemple de tuiles exemple donné ici .

Ci-dessous mon POM.xml:

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.Apache.tiles</groupId>
            <artifactId>tiles-api</artifactId>
            <version>2.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.Apache.tiles</groupId>
            <artifactId>tiles-core</artifactId>
            <version>2.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.Apache.tiles</groupId>
            <artifactId>tiles-jsp</artifactId>
            <version>2.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.5.2</version>
        </dependency>

Lorsque j'essaie d'exécuter l'exemple, l'erreur ci-dessous est générée:

Sep 17, 2010 11:59:43 PM org.Apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class      org.Apache.tiles.web.startup.TilesListener
Java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.Java:60)
at org.Apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.Java:155)
at org.Apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.Java:131)
at org.Apache.commons.logging.LogFactory.getLog(LogFactory.Java:685)
at org.Apache.tiles.web.startup.TilesListener.<init>(TilesListener.Java:49)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at Java.lang.reflect.Constructor.newInstance(Unknown Source)
at Java.lang.Class.newInstance0(Unknown Source)
at Java.lang.Class.newInstance(Unknown Source)

Une idée?

J'ai passé 30 minutes à chercher sur Google pour cela, mais je n'ai pas trouvé de solution possible.

Aidez-moi, s'il vous plaît...

41
javanoob

Vous avez inclus une dépendance à l'API SLF4J, que vous utilisez dans votre application pour la journalisation, mais vous devez également inclure une implémentation qui effectue le travail de journalisation réel.

Par exemple, pour vous connecter via Log4J, vous ajouteriez cette dépendance:

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

L'implémentation recommandée serait logback-classic, qui est le successeur de Log4j, faite par les mêmes personnes que celles qui ont fabriqué SLF4J et Log4J:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>0.9.24</version>
</dependency>

Remarque: les versions peuvent être incorrectes.

104
gpeche

Vous avez inclus la dépendance de l'API de sflj, mais pas celle de la mise en œuvre de l'API, c'est-à-dire un fichier jar séparé. Vous pouvez essayer slf4j-simple-1.6.1.jar.

j'ai eu la même erreur tout en travaillant avec Hibernate, j'avais ajouté ci-dessous la dépendance dans mon pom.xml qui a résolu le problème

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.10</version>
    </dependency>

reference https://mvnrepository.com/artifact/org.slf4j/slf4j-api

1
Mateen

Ajoutez les jarres de toutes les briques comme (tiles-jsp, tiles-servlet, tiles-template, tiles-extras.tiles-core) dans le dossier lib de votre serveur et votre chemin de construction de l'application.

1
user4856159

Copiez toutes les entrées de commande du fichier .iml du dossier de départ dans votre fichier /src/main/main.iml ..__ Ceci résoudra le problème.

0
Vivek