No se detectaron tipos de Spring WebApplicationInitializer en classpath

Mi proyecto Eclipse de repente ya no se despliega correctamente. No puedo rastrearlo a ningún cambio particular que haya hecho en el medio ambiente.

He probado con múltiples proyectos controlados por fuente y todos se comportan de la misma manera:

May 01, 2013 12:00:45 PM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files (x86)\Java\jdk1.7.0_11\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows \System32\WindowsPowerShell\v1.0\;. May 01, 2013 12:00:45 PM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:fismacm' did not find a matching property. May 01, 2013 12:00:45 PM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["http-bio-8080"] May 01, 2013 12:00:45 PM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] May 01, 2013 12:00:45 PM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 296 ms May 01, 2013 12:00:45 PM org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina May 01, 2013 12:00:45 PM org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.35 May 01, 2013 12:00:46 PM org.apache.catalina.core.ApplicationContext log INFO: No Spring WebApplicationInitializer types detected on classpath May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/core is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/sql_rt is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/sql is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/core is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/functions is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/permittedTaglibs is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/xml is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/scriptfree is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt_rt is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/fmt is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/xml is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/xml_rt is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/sql is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://www.springframework.org/tags/form is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://www.springframework.org/tags is already defined May 01, 2013 12:00:48 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://www.springframework.org/security/tags is already defined May 01, 2013 12:00:48 PM org.apache.catalina.core.ApplicationContext log INFO: No Spring WebApplicationInitializer types detected on classpath May 01, 2013 12:00:48 PM org.apache.catalina.core.ApplicationContext log INFO: No Spring WebApplicationInitializer types detected on classpath May 01, 2013 12:00:48 PM org.apache.catalina.core.ApplicationContext log INFO: Set web app root system property: 'webapp.root' = [X:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\fismacm\] May 01, 2013 12:00:48 PM org.apache.catalina.core.ApplicationContext log INFO: Initializing log4j from [X:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\fismacm\WEB- INF\log4j.properties] May 01, 2013 12:00:48 PM org.apache.catalina.core.ApplicationContext log INFO: Initializing Spring root WebApplicationContext 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. May 01, 2013 12:00:49 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-8080"] May 01, 2013 12:00:49 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8009"] May 01, 2013 12:00:49 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 3898 ms 

Este parece ser el componente clave: INFO: No se detectaron tipos Spring WebApplicationInitializer en classpath.

Intenté limpiar los proyectos, redefinir los servidores e incluso crear espacios de trabajo completamente nuevos. Claramente me perdí la marca.

Cualquier consejo sobre cómo limpiar esto sería muy apreciado.

Pasé horas en esto, y la solución fue:

  • Detener a Tomcat
  • Menú “Proyecto” -> Limpiar -> Limpiar todos los proyectos
  • Pestaña Servidores -> Tomcat -> clic con el botón derecho -> Limpiar …
  • Haga clic derecho en el proyecto -> Ejecutar como -> Ejecutar en el servidor

Esto resultó ser un error estúpido. Mi log4j no fue configurado para capturar mi salida de error. Estaba lanzando errores de configuración en segundo plano y una vez que los solucioné, me fue bien y mis asignaciones de solicitudes funcionaron bien.

Ten cuidado si estás usando Maven. La estructura de su carpeta debe ser correcta.

Al usar Maven, el directorio WEB-INF debe estar dentro de la aplicación web :

 src/main/webapp/WEB-INF 

INFORMACIÓN: No se detectaron tipos Spring WebApplicationInitializer en classpath.

También puede aparecer si está usando Maven con Eclipse y desplegando su WAR usando;

(Eclipse, Kepler, con M2)

(haga clic derecho en su proyecto) -> Ejecutar como -> Ejecutar en el servidor

Se trata de la generación y eliminación de la carpeta y los contenidos m2e-wtp .

Asegúrese de que los archivos generados por Maven Archive en el directorio de comstackción estén marcados.

Debajo de: “Ventana -> preferencias -> Maven -> Integración Java EE”

Entonces:

Use M2, para hacer su comstackción, es decir, el paquete Clean -> habitual o Install etc …

Si “Proyecto -> Crear automáticamente” no está seleccionado. Puede forzar la generación de “carpetas y contenidos m2e-wtp”;

(haga clic derecho en su proyecto) -> Maven -> Actualizar proyecto …

Nota: asegúrese de que la opción “Proyectos limpios” no esté seleccionada. De lo contrario, los contenidos de target / classes se eliminarán y volverás al punto uno.

Además, cuando

Se selecciona ” Proyecto -> Crear automáticamente ” y se genera la “carpeta y contenidos m2e-wtp”

o ” Proyecto -> Construir todo

o ” (haga clic derecho en el proyecto) -> Proyecto de comstackción

WebApplicationInitializer es una interfaz que puede implementar en una de sus clases. Al inicio, Spring está buscando estas clases, siempre que utilice la especificación de servlet 3 y tenga un atributo metadata-complete = “false” en su web.xml. Pero ese no parece ser el problema. El único error que puedo averiguar es el slf4j-log4j12.jar que falta.

También tuve el mismo problema. Mi experto tenía un plugin de tomcat7 pero el entorno de JRE era 1.6. Cambié mi tomcat7 por tomcat6 y el error desapareció.

xml no estaba en la carpeta WEB-INF, por eso recibí este error, asegúrese de que web.xml y xxx-servlet.xml estén dentro de la carpeta WEB_INF y no en la carpeta webapp.

Obtuve un error tonto que me tomó un tiempo vergonzosamente largo de resolver … Mira mi pom.xml …

 < ?xml version="1.0" encoding="UTF-8"?>  4.0.0 com.outbottle PersonalDetailsMVC 1.0-SNAPSHOT war PersonalDetailsMVC  ${project.build.directory}/endorsed UTF-8 4.0.1.RELEASE 1.2 3.0.1    javax javaee-web-api 7.0 provided   org.springframework spring-core ${spring.version}   org.springframework spring-web ${spring.version}   org.springframework spring-webmvc ${spring.version}   javax.servlet javax.servlet-api ${javax.servlet.version} provided   jstl jstl ${jstl.version}      org.apache.maven.plugins maven-compiler-plugin 3.1  1.8 1.8  ${endorsed.dir}     org.apache.maven.plugins maven-war-plugin 2.3  false    org.apache.maven.plugins maven-dependency-plugin 2.6   validate  copy   ${endorsed.dir} true   javax javaee-endorsed-api 7.0 jar         

El problema fue mi nombre de paquete. DEBE ser “com.outbottle” (luego config / controllers / model / etc) para que funcione. Como puede ver arriba, utilicé Maven (por primera vez), Spring, 1.8 JDK y casi tuve un accidente cerebrovascular al depurar este problema. Todo funcionando en Glassfish (Tomcat también está bien para la configuración pom anterior). Dicho esto, ahora estoy contento conmigo mismo y conozco a Maven y Spring mucho mejor para el próximo paso de mi curva de aprendizaje de Spring. ¡Espero que esto te ayude también!

STS tiene una carpeta de metadatos debajo de su área de trabajo. Verá el error real en el archivo .log en C: \ Users \ firstname.lastname \ Documents \ workspace-sts-3.9.2.RELEASE.metadata