2010-09-17 16 views
39

Estoy tratando de ejecutar el ejemplo de ejemplos de teselas dado here.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

A continuación es mi 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> 

Cuando estoy tratando de ejecutar el ejemplo se lanza el error abajo:

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) 

Alguna idea?

Pasé 30 minutos buscando en Google para esto pero no pude encontrar una posible solución.

Por favor, ayúdame ...

Respuesta

96

Ha incluido una dependencia en la API SLF4J, que es la que usa en su aplicación para el registro, pero también debe incluir una implementación que realice el trabajo real de registro.

Por ejemplo, para conectarse a través Log4J deberá añadir esta dependencia:

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

La aplicación recomendada sería logback-clásico, que es el sucesor de Log4j, hecha por los mismos chicos que hicieron SLF4J y Log4J:

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

Nota: Las versiones pueden ser incorrectas.

+6

Para ser precisos, logback es un fork de log4j, no un sucesor. –

+3

org.slf4j slf4j-log4j12 1.5.2 Agregado por encima de la dependencia y funcionó ... 'Gracias chicos por todo replies' – javanoob

+10

Logback no es un tenedor de log4j, de hecho es un sucesor. Realmente no comparte el código con Log4j y Ceki Gülcü, el creador de ambos frameworks, ha declarado claramente que al crearlo: http://ceki.blogspot.fr/search?q=logback. – PomCompot

8

que ha incluido la dependencia de la API de sflj, pero no la dependencia para la implementación de la API, es decir un frasco separado, podría intentar slf4j-sencillo-1.6.1 .tarro.

+1

Eso funcionó para mí. He estado usando la aplicación en TomCat por años. Intenté ejecutar en JBoss 5.1.1 y necesitaba esta biblioteca. No sé por qué no lo necesitó en TomCat ..... – AgilePro

1

Agregue todos los archivos jar como (tiles-jsp, tiles-servlet, tiles-template, tiles-extras.tiles-nucle) a la carpeta lib de su servidor y la ruta de compilación de su aplicación, entonces funciona si usa apache tailes con aplicación de mvc de primavera

0

Copie todas las entradas de pedidos de la carpeta de inicio archivo .iml en su archivo /src/main/main.iml. Esto resolverá el problema.

Cuestiones relacionadas