2012-07-05 12 views
8

Sono nuovo per Maven e negli ultimi due giorni tento di integrare Maven in un piccolo progetto web. (Io uso Eclipse Juno come IDE). Prima ho generato un nuovo progetto (struttura) con il comando "mvn-archetype-webapp" e ho copiato i sorgenti dal progetto in questa struttura. Poi ho aggiunto tutte le dipendenze al pom.xml in modo che potessi compilare e avviare il progetto con il plugin tomcat7. Finora tutto funziona bene, tranne i messaggi di errore SLF4J all'inizio di ogni comando Maven:SLF4J Errore di binding

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. 

mie dipendenze pom.xml assomiglia a questo:

<!-- properties --> 
    <properties> 
     <spring.version>3.1.1.RELEASE</spring.version> 
    </properties> 

    <!-- dependencies --> 
    <dependencies> 

     <!-- logging --> 
     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>1.0.6</version> 
     </dependency> 

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

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jcl-over-slf4j</artifactId> 
      <version>1.6.6</version> 
      <scope>runtime</scope> 
     </dependency> 

     <!-- junit --> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 

     <!-- Spring 3 --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${spring.version}</version> 
      <exclusions> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${spring.version}</version> 
      <exclusions> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions>      
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring.version}</version> 
      <exclusions> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions>    
     </dependency> 

     <!-- jee --> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-web-api</artifactId> 
      <version>6.0</version> 
      <scope>provided</scope> 
     </dependency> 

     <!-- tiles --> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-core</artifactId> 
      <version>2.2.2</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-api</artifactId> 
      <version>2.2.2</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-jsp</artifactId> 
      <version>2.2.2</version> 
     </dependency> 

     <!-- jstl --> 
     <dependency> 
      <groupId>jstl</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 
    </dependencies> 

Qualcuno può aiutarmi con questo problema?

+0

possibile duplicato di [SLF4J: Impossibile caricare la classe "org.slf4j.impl.StaticLoggerBinder". errore] (http://stackoverflow.com/questions/11916706/slf4j-failed-to-load-class-org-slf4j-impl-staticloggerbinder-error) –

risposta

8

Eclipse Juno e Indigo, quando si utilizza la versione di Maven in bundle (m2e), non sopprimono il messaggio SLF4J: Impossibile caricare la classe "org.slf4j.impl.StaticLoggerBinder". Questo comportamento è presente dalla versione m2e 1.1.0.20120530-0009 e successive.

Anche se questo è indicato come errore, i registri verranno salvati normalmente. L'errore evidenziato sarà ancora presente fino a quando non ci sarà una correzione di questo bug. Maggiori informazioni su questo nello m2e support site.

L'attuale soluzione disponibile consiste nell'utilizzare una versione esterna di Maven anziché la versione in bundle di Eclipse. Puoi trovare informazioni su questa soluzione e maggiori dettagli su questo bug nella domanda qui sotto, che è esattamente lo stesso problema che stai affrontando.

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". error

0

Provare ad aggiungere la dipendenza per logback-core.

<dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-core</artifactId> 
     <version>1.0.6</version> 
     <scope>runtime</scope> 
    </dependency> 
+0

Grazie, ma questo non funziona. Stessi messaggi di errore :( –

+0

La dichiarazione di logback-classic è sufficiente per inserire logback-core e slf4j-api in virtù della transitività delle dipendenze di Maven.Non c'è bisogno di dichiarare logback-core come dipendenza. – Ceki

1

Le dichiarazioni di dipendenza sembrano buone. Logback e slf4j saranno spediti nella tua app web. Tuttavia, sospetto che slf4j-api.jar sia in qualche modo incluso in Tomcat (ma non nel logback).

BTW, il comando mvn dependency:tree è tuo amico. Cosa dice?

+0

Aggiunto dipendenze Maven alla mia risposta, sopra. (Sì, succede ancora mesi dopo ...) – Tim

3

Sto riscontrando lo stesso problema: ho copiato il mio POM in un progetto vuoto e l'ho ridotto a quasi nulla (vedi sotto) - e vedo ancora l'errore. Posso verificare che non vada via aggiungendo binding a SLF4J (logback, ecc.) Al POM - il messaggio apparentemente proviene da Maven stesso, non dal software di progetto in fase di compilazione e test. (Ora sto ottenendo da un progetto completamente vuoto.)

La cosa migliore che posso capire è che penso che abbia qualcosa a che fare con Eclipse: quando eseguo Maven manualmente, dalla riga di comando, l'errore non appare - solo quando si richiama in Eclipse. (Sto usando Eclipse Helios Release 2 su MacOSX, appena cronaca, quindi sappiamo che il problema non è limitato alla versione, Juno.)

<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>testing</groupId> 
    <artifactId>testing</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

</project> 

FYI, in risposta al suggerimento di Ceki, ecco i risultati di maven's dependency tree goal:

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. 
[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building testing 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ testing --- 
[INFO] testing:testing:jar:0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 1.496s 
[INFO] Finished at: Thu Oct 04 10:05:41 MDT 2012 
[INFO] Final Memory: 9M/81M 
[INFO] ------------------------------------------------------------------------ 

Non troppo informativo, ma è così.

3

Questo errore deriva da eclissi che esegue maven, non dal progetto, quindi non dovrebbe influire sul processo di compilazione o sui file risultanti.

Presumo che si tratti di un problema relativo a Maven che non utilizza slf4j o un altro strumento di registrazione, ma che tenta di eseguire eclipse o un plug-in Maven.

Il modo più semplice per eliminare l'errore è utilizzare un esperto esterno anziché il runtime in eclissi è possibile configurarlo in Preferenze -> Maven -> Installazioni.

0

"con il plugin tomcat7"

Il plugin tomcat7 ha la dipendenza SLF4J. Ho avuto lo stesso problema fino a quando non ho assegnato la dipendenza direttamente al plugin tomcat7.

<pluginManagement> 
<plugins> 
    <plugin> 
     <groupId>org.apache.tomcat.maven</groupId> 
     <artifactId>tomcat7-maven-plugin</artifactId> 
     <version>2.2</version> 
     <dependencies> 
      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-simple</artifactId> 
       <version>1.7.5</version> 
      </dependency>      
     </dependencies> 
     <configuration> 
      <!-- ...snip... --> 
     </configuration> 
    </plugin> 
</plugins> 
</pluginManagement> 
-1

È possibile aggiungere questo alle proprietà pom.

<org.slf4j-version>1.7.5</org.slf4j-version> 
Problemi correlati