java - kepler - eclipse linux
Diferencia entre el ensamblado de implementación y las dependencias del módulo J2EE en Eclipse (3)
Al armar un WAR, Eclipse no puede decir simplemente mirando las dependencias de su compilación de compilación, ya sea que sean algo que debe incluirse en el directorio WEB-INF / lib de WAR o si son algo que espera que esté disponible en el classpath de su servidor. Se necesitan metadatos adicionales para diferenciar entre esos casos.
Si observa su vista de problemas, debería ver numerosas advertencias que se ven así:
"La entrada de Classpath [algo] no se exportará ni publicará ..."
Haga clic derecho sobre ellos y seleccione "Solución rápida". Verá un diálogo con las soluciones disponibles. Uno de ellos va a decir algo como "Marcar la entrada classpath asociada como la dependencia de publicación / exportación ...". Usa esa opción
Lo anterior hará una ligera alteración al archivo .classpath de su proyecto Java para etiquetar las dependencias para su inclusión en el ensamblado. Puede probar sin ejecutar exportando un archivo WAR y verificando el contenido de la carpeta WEB-INF / lib.
Cuando se utiliza un Eclipse 3.7 Indigo para desarrolladores de Java EE, hay algo llamado Ensamblaje de despliegue . Pude encontrar en Google y entendí que es similar a las dependencias del Módulo J2EE donde podíamos seleccionar el archivo jar y que va y se encuentra en la carpeta EAR o en WEB-INF / lib en caso de WAR. Ahora la duda que tengo es,
Tengo una dependencia de JavaProject. He agregado todos los Jars dependientes a través de la variable classpath . Ahora el Proyecto de Dependencias se agrega como dependencia a mi proyecto web TestWebProject . La compilación del proyecto web es correcta, pero durante el tiempo de ejecución me sale un error porque no se encontró un archivo jar. Podría arreglar este mi jar de inclusión en Deployment Assembly of Dependencies Project, que es un proyecto independiente.
La pregunta es por qué tuve que arreglar el jar en el ensamblado de implementación ya que, primero, es un proyecto independiente y segundo, si no tuviera este ensamblado de implementación, ¿cómo podría solucionarse esto?
Ruta de compilación: coloque su jar aquí directamente, estará disponible para el tiempo de ejecución del código y de compilación.
Ensamblaje de implementación: Eclipse espera que los proyectos en esta ruta se agrupen e implementen como .jar en la carpeta web-inf / lib. Para que esté disponible tanto para el tiempo de compilación como para el tiempo de ejecución. Si el proyecto no se implementa en el ensamblado de implementación, entonces el código está disponible solo para el tiempo de compilación, eclipse no lo agrupará y en el tiempo de ejecución los proyectos dependientes no estarán disponibles para el código.
Pude encontrar en Google y entendí que es similar a las dependencias del Módulo J2EE
Se llamó "Dependencias del módulo J2EE" hasta con Eclipse 3.5. Después de esa versión, se renombró a "Implementación de implementación". Pero es efectivamente lo mismo en el caso de los proyectos web de Java EE.
La pregunta es por qué tuve que arreglar el contenedor en el ensamblaje de implementación ya que es un proyecto independiente
Debido a esto, Eclipse autogenerará un archivo JAR del proyecto y colocará /WEB-INF/lib
del despliegue del proyecto web. Si no hace eso, el JAR no estará disponible durante el tiempo de ejecución de la aplicación, pero solo durante el tiempo de compilación y Eclipse espera que ya lo haya construido y colocado en cualquier otro lugar en el classpath del tiempo de ejecución, por ejemplo, el propio /lib
del servidor.
si no tuviera este conjunto de implementación, ¿cómo podría solucionarse?
Manualmente construya / exporte el JAR y suelte en la propia /WEB-INF/lib
o en la propia /lib
del servidor. La configuración del "Ensamblaje de despliegue" es, sin embargo, más fácil y la forma recomendada.