2012-07-05 15 views
8

Soy nuevo en maven y los últimos dos días intenté integrar maven en un pequeño proyecto web. (uso Eclipse Juno como IDE). Primero generé un nuevo proyecto (estructura) con el comando "mvn-archetype-webapp" y copié las fuentes del proyecto en esta estructura. Luego agregué todas las dependencias al pom.xml para poder compilar e iniciar el proyecto con el complemento tomcat7. Hasta ahora todo funciona bien, excepto los mensajes de error SLF4J al comienzo de cada comando experto:SLF4J Error de enlace

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. 

Mis pom.xml dependencias se parece a esto:

<!-- 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> 

Puede alguien ayudarme con este problema?

+0

posible duplicado de [SLF4J: Error al cargar la clase "org.slf4j.impl.StaticLoggerBinder". error] (http://stackoverflow.com/questions/11916706/slf4j-failed-to-load-class-org-slf4j-impl-staticloggerbinder-error) –

Respuesta

8

Eclipse Juno e Indigo, al usar la versión empaquetada maven (m2e), no están suprimiendo el mensaje SLF4J: Error al cargar la clase "org.slf4j.impl.StaticLoggerBinder". Este comportamiento está presente desde la versión m2e 1.1.0.20120530-0009 en adelante.

Aunque, esto se indica como un error, sus registros se guardarán normalmente. El error resaltado seguirá presente hasta que haya una solución para este error. Más sobre esto en el m2e support site.

La solución actual disponible es utilizar una versión externa de maven en lugar de la versión incluida de Eclipse. Puede encontrar esta solución y más detalles sobre este error en la pregunta siguiente, que es exactamente el mismo problema que enfrenta.

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

0

Intente agregar la dependencia para logback-core.

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

Gracias, pero esto no funciona. Los mismos mensajes de error :( –

+0

Declarar logback-classic es suficiente para extraer tanto logback-core como slf4j-api en virtud de la transitividad de dependencias de Maven. No es necesario declarar logback-core como una dependencia. – Ceki

1

Las declaraciones de dependencia se ven bien. Logback y slf4j serán enviados a su aplicación web. Sin embargo, sospecho que slf4j-api.jar está de alguna manera incluido en Tomcat (pero no en el logback).

Por cierto, el comando mvn dependency:tree es tu amigo. ¿Qué dice?

+0

Agregados dependencias maven a mi respuesta, arriba. (Sí, todavía ocurre meses después ...) – Tim

3

Estoy experimentando el mismo problema: he copiado mi POM a un proyecto vacío, y lo he reducido a casi nada (ver a continuación), y sigo viendo el error. Puedo validar que no desaparece agregando enlaces SLF4J (logback, etc.) al POM; el mensaje aparentemente proviene del propio Maven, no del software del proyecto que se está compilando y probando. (Ahora lo obtengo de un proyecto completamente vacío.)

Lo mejor que puedo descubrir es que creo que tiene algo que ver con Eclipse: cuando ejecuto Maven manualmente, desde la línea de comandos, el error no aparece, solo cuando se invoca bajo Eclipse. (Estoy usando Eclipse Helios Release 2 en MacOSX, lo digo, por lo que sabemos, el problema no se limita a su versión, 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> 

su información, en respuesta a la sugerencia de Ceki, aquí están los resultados de El objetivo del árbol de dependencia de maven:

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] ------------------------------------------------------------------------ 

No es muy informativo, pero lo es.

3

Este error proviene de eclipse running maven, no de su proyecto, por lo que no debería afectar su proceso de compilación o los archivos resultantes.

Supongo que se trata de un problema relacionado con maven que usa no slf4j u otra herramienta de registro, pero se intenta con eclipse o un plugin maven.

La forma más fácil de deshacerse del error es utilizar un experto externo en lugar del tiempo de ejecución en eclipse. Puede configurar esto en Preferencias -> Maven -> Instalaciones.

0

"con el plugin tomcat7"

El plugin tomcat7 tiene la dependencia SLF4J. Tuve el mismo problema hasta que asigné la dependencia directamente al complemento 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

Puede agregar esto a sus propiedades de pom.

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