Así que comencé con un proyecto de servicios web (solo un proyecto web dinámico) que crea y depura correctamente desde eclipse. Hemos extraído un fragmento de código común que queremos colocar en una biblioteca compartida, por lo que ahora esas clases van a un proyecto jar separado al que hace referencia el proyecto web.Problema de ruta de clase de tiempo de depuración de Eclipse: ¿cómo se incluye la salida de un proyecto dependiente en el classpath en tiempo de ejecución de un proyecto web?
En el proyecto web, hice Project-> Properties-> Java Build Path-> Projects-> Add y agregué el proyecto jar. Y esto solucionó correctamente todos los problemas de classpath en tiempo de compilación y todo funciona bien. Pero en el tiempo de ejecución, cuando el servidor tomcat se activa, Spring intenta inyectar algunas de las clases contenidas en el archivo jar y obtengo un NoClassDefFoundError.
Mis archivos .class y de propiedades y el contenido de mi directorio META-INF se muestran en el directorio ./build, pero mi directorio WEB-INF/lib parece estar referenciado in situ, y la dependencia jar no se usa no se copie para mostrarlo como parte de la Biblioteca de aplicaciones web.
¿Cuál es el encantamiento mágico para decirle al eclipse que el otro proyecto jar debe estar disponible para tomcat en tiempo de ejecución? Desde nuestro script de compilación ant, primero construimos el otro proyecto en WEB-INF/lib y todo funciona bien, pero no para la depuración de eclipse.
Eso parece haber hecho el truco, pero no estoy seguro de lo que está diciendo acerca de que sea un proyecto de "utilidad". ¿Hay algo que pueda ver en mi archivo .project o en .settings/que me permita saber si era del tipo correcto? –
Los proyectos de utilidad son proyectos de Java, aunque son más aptos para el contexto de J2EE. Representan su código (no los archivos JAR de terceros) que se comparten en varios proyectos en su aplicación Enterprise. Por lo general, estas son clases utilizadas en múltiples EJB y, a menudo, un solo módulo web. –
Normalmente no ubico proyectos de utilidad en proyectos simples de Java, porque los proyectos de utilidad tendrán los JAR de tiempo de ejecución del Servidor automáticamente agregados al classpath. Por ejemplo, podría utilizar datasources del mismo proyecto sin agregar los JAR del contenedor a la ruta de compilación. –