proyecto problemas funciona forzar errores error eliminar descarga dependencias crear con java eclipse tomcat maven classnotfoundexception

java - problemas - maven no funciona



ClassNotFoundException DispatcherServlet al iniciar Tomcat(las dependencias de Maven no se copiaron en wtpwebapps) (3)

Me he topado con este problema varias veces y me he topado con una solución (semi) confiable, así que pensé en publicarla aquí en caso de que ayude a alguien más, o en caso de que la olvide, y también preguntarle a alguien tiene alguna idea de cuál es la causa subyacente y por qué funciona mi solución.

El problema: tengo una aplicación web Spring 3 que quiero usar la opción Ejecutarme en 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 maven del proyecto no se habían copiado a WEB-INF/lib en ${PROJECT_LOCATION}/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/

Intenté muchas cosas antes de darme cuenta de que el proyecto tenía una advertencia en el panel de Problemas:

Classpath entry org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER will not be exported or published. Runtime ClassNotFoundExceptions may result.

Tal vez debería haber notado esto antes.

De todos modos, seleccionar esto y realizar la "Solució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 tu ayuda.


Eche un vistazo a la sección "Ensamblaje de despliegue" debajo de las propiedades del proyecto. El contenido de esta página especifica cómo se ensamblará su proyecto en una aplicación en ejecución. En particular, este es el lugar donde puede controlar cuál de las bibliotecas a las que hace referencia su proyecto debe estar empaquetada con ella. Seleccione Agregar -> Entradas de ruta de compilación Java. Podrá elegir entre las entradas existentes de la ruta de compilación para incluirlas en el ensamblado.

La solución rápida que encontraste hizo lo mismo para ti. Si tiene curiosidad sobre lo que sucede debajo de las cubiertas, eche un vistazo a su archivo .classpath antes y después de la solución rápida. La solución rápida etiqueta la entrada classpath con cierta información de ensamblaje.



Verifique el archivo .class y reemplace la siguiente entrada

**<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER" />**

con Abajo: -

**<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"> <attributes> <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> </attributes> </classpathentry>**

Funcionó para mí