2011-04-09 3 views
20

que tienen una estructura de proyecto eclipse que se ve algo como esto:Tomcat lanza excepciones ClassNotFound para las clases en otro eclipse de proyectos open

eclipse 
    project a 
    project b 

Todos estos proyectos son proyectos de Maven. El Proyecto B es un proyecto de WTP de Eclipse y contiene el Proyecto A como una dependencia. Estoy usando el plugin m2eclipse.

Cuando puedo implementar el proyecto B a Tomcat (todo desde dentro de Eclipse) que siempre lanza errores diciendo que no puede encontrar clases de proyecto A. La única manera de que pueda resolver este es cerca Proyecto A en Eclipse y realice un comando instalar mvn, por lo tanto, en este punto, el Proyecto A se trata como cualquier otra dependencia.

Me gustaría no tener que volver a abrir y luego cerrar el Proyecto A cada vez que hago cambios en él (que es bastante frecuente en esta etapa).

He intentado agregar el Proyecto A a la Ruta de compilación del Proyecto B, sin embargo, eso no parece ser el truco. De nuevo, solo funciona si cierro el proyecto en eclipse por lo que se trata como una dependencia de maven normal.

FYI Estoy usando la versión Helios de Eclipse. El proyecto B es un proyecto de primavera, por lo que naturalmente Tomcat se cae cuando importa todos los frijoles, etc.

¿Alguien tiene alguna sugerencia? Muchas gracias.

Respuesta

5

La razón por la cual tomcat no puede encontrar sus clases es porque la dependencia del proyecto en eclipse no es vista por tomcat. Para resolver el problema, puede agregar la carpeta bin del proyecto a a la ruta de clase tomcat de la aplicación que se ejecuta desde el proyecto b.

-1

añadiendo carpeta bin en la ruta de clase no es buena opción, que sove promplem temorarily whot si implementa a otro sistema

por lo compilar las clases de proyectos dependido y ponerlo en Tomcat sí,

recomiendo use Apache Ant para hacer esto, vea Example

31

Si vas a las propiedades del proyecto, recoge el artículo "Asamblea de despliegue", haga clic en "Añadir ..." y elegir la opción "Proyecto", puede agregar el proyecto dependiente y el tema debe ser resuelto.

+2

de Jalkin con la configuración de ejecución trabajó también, pero esto parece mucho más limpio, gracias. – amoebe

+3

Esto debe marcarse como la respuesta correcta –

+2

Lector futuro, no se vuelva loco si esta solución no funciona para usted. Tampoco funciona para mí. :-( – Sharky

71

Lo que hay que hacer es esto:

  1. En Eclipse vaya a Ventana> Mostrar vista> Servidores> y pestaña abierta llamados servidores
  2. En Servidores, haga doble clic en el servidor que desea
  3. Este La acción debe abrir una ventana titulada Descripción general, con su Servidor seleccionado en la TAB
  4. En esta ventana, seleccione: Abrir configuración de inicio, y haga clic en el enlace.
  5. En la ventana Editar configuración, seleccione la pestaña llamada ruta de clases
  6. En el cuadro de texto ruta de clases, seleccione la línea: Entradas de Usuario
  7. Ahora empuje el botón de la derecha titulado: Añadir Proyectos
  8. en la selección Proyecto resultante Seleccione el proyecto externo que desea que el servidor encuentre mediante un clic.
  9. cerrar estas ventanas haciendo clic en Aplicar y luego en Aceptar en su caso a medida que trabaja en la pila
  10. reiniciar su servidor en la ventana general

Usted debe estar listo para ir. En realidad, es solo un ejercicio de 2 minutos. Buena suerte

+1

Esto es exactamente lo que estaba buscando. ¡Gracias! –

+0

Gracias, esto fue increíble. –

+0

Esto funciona. Siento mucha culpa del programador haciéndolo, pero funciona. Quizás algún día m2e se encargará de la implementación de las dependencias del proyecto automáticamente. – Sharky

5

Haga clic derecho en el proyecto web que se agrega al servidor contenedor y seleccione Maven y luego seleccione Deshabilitar la resolución del espacio de trabajo. Entonces su proyecto de dependencia comenzará a aparecer como un contenedor como cualquier otra dependencia.

Haga clic derecho en el proyecto web -> Maven -> Deshabilitar la resolución del espacio de trabajo.

+3

Esto también funciona (simplemente lo probé). Tiene la desventaja de requerir que ejecute 'mvn install' en" project a "cada vez que algo cambie allí, ya que" project b "ahora depende del artefacto en su repositorio. – Sharky

0

manera simple: solución

Run -> Run Configurations... -> Classpath

Cuestiones relacionadas