Me he topado con este problema varias veces y me he encontrado con una solución (semi) confiable, así que pensé en publicarla aquí en caso de que me ayude alguien más, o en caso de que lo olvide, y también para preguntar si alguien tiene alguna idea de cuál es la causa subyacente y por qué funciona mi solución.ClassNotFoundException DispatcherServlet al iniciar Tomcat (dependencias de Maven no copiadas en wtpwebapps)
El problema - Tengo una aplicación web Spring 3 que quiero usar la opción Ejecutar en el servidor en Eclipse para ejecutar en un servidor Tomcat 7. Con algunos proyectos, esto solo funciona, pero algunos parecen estar en un estado roto por el cual cada vez que el servidor se inicia obtengo una clase no encontrada: org.springframework.web.servlet.DispatcherServlet.
Después de algunas investigaciones descubrí que las dependencias de Maven del proyecto no habían sido copiados a WEB-INF/lib
en ${PROJECT_LOCATION}/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/
I probado un montón de cosas antes de finalmente darse cuenta de que el proyecto tenía una advertencia en el panel Problemas:
Classpath entry org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER
will not be exported or published. Runtime ClassNotFoundExceptions may result.
Quizás debería haberlo notado antes.
De todos modos, seleccionar esto y realizar la "Corrección rápida" soluciona el problema y puedo ejecutar mi proyecto felizmente. La solución rápida es: "Marcar la entrada asociada classpath sin procesar como una dependencia de publicación/exportación".
El problema es que, aunque esto funciona, no sé lo que significa. No puedo ver ningún cambio obvio en la configuración de mi proyecto una vez hecho. Me gustaría saber cuál es el problema real y si puedo evitar que vuelva a suceder. También me gustaría saber si hay algo que podría haber hecho yo mismo (aparte de realizar la solución rápida) que lo habría arreglado, porque siento que intenté casi todo lo demás.
Gracias por su ayuda.
Gracias! Me resulta imposible recordar cosas si no entiendo _cómo_ funciona, por lo que es probable que esto me ahorre mucho dolor en el futuro. – Russell
Impresionante. Esto realmente me ayudó después de que mi Eclipse explotó repentinamente sin ninguna razón ayer. – fforw