2009-11-07 14 views
22

Esta pregunta es sobre el desarrollo de Eclipse, estoy intentando crear una aplicación web en Eclipse, el problema es que no obtengo los archivos de las dependencias del archivo desplegado.Eclipse Web Project Dependencies

He creado un nuevo proyecto web dinámico y lo he vinculado a otro proyecto de Java. El proyecto Java hace referencia a algunas jarras de terceros (por ejemplo, jarras de primavera) pero, por alguna razón, al publicar el proyecto web solo obtengo el jar del proyecto Java en el directorio lib de la guerra, sin las dependencias del proyecto Java (por ejemplo, Spring).

En otras palabras, tengo el proyecto A (proyecto web) que depende del proyecto B (Proyecto Java), el proyecto B depende de los contenedores de Spring. Cuando publico el proyecto web como una guerra para JBoss, solo el proyecto B se empaqueta en el contenedor (no hay tarros de primavera)

Sé que puedo hacerlo con hormiga, incluso tengo tal build.xml para construir toda la aplicación, pero El eclipse de pensamiento también puede realizar la tarea de empaquetado para mí.

He añadido el proyecto Java a las dependencias del módulo Java EE en el proyecto web.

¿Debo usar la opción de exportación en las propiedades de ruta de compilación del proyecto Java? ¿Debería agregar las dependencias del proyecto Java al proyecto web también?

¿Qué estoy haciendo mal?

Edición: Estoy usando Eclipse 3.5.1

+0

Ten en cuenta también esta pregunta: http://stackoverflow.com/questions/1691553/java-web-project-referencing-another-java-project. –

+1

He visto esta pregunta, agregar las dependencias en las dependencias del módulo Java EE simplemente no resuelve mi problema – LiorH

+0

Probablemente necesitó agregar los contenedores Spring a la lista de dependencias del proyecto web. Puede que no hayan sido transitivos. – nitind

Respuesta

47
  1. Ir al proyecto web propiedades.
  2. Ensamblaje de despliegue (izquierda).
  3. Agregar> Seleccionar proyecto> Seleccione su proyecto lib> Verifique "Ensamblar proyectos en la carpeta WEB-INF/lib de la aplicación web" si no está marcado> Finalizar.
  4. Ruta de compilación Java (izquierda)> Pestaña Proyectos> Agregar ...> Seleccione su proyecto lib> Aceptar
  5. Ruta de compilación Java (izquierda)> Pestaña Ordenar y exportar> Seleccione su proyecto lib.
  6. Guardar
  7. Ahora funciona.
0

Debe estar empaquetando su aplicación web en un archivo WAR antes de su despliegue. Debe haber una manera de decirle a Eclipse qué archivos JAR le gustaría poner en el directorio WEB-INF/lib. De lo contrario, escriba Ant build.xml que lo haga por usted.

No debería tener que modificar ninguna variable de classpath en su entorno o en el servidor de la aplicación. La forma correcta de hacerlo es crear un archivo WAR adecuado.

ACTUALIZACIÓN: me re-leer su pregunta:

pero por algunas razones al publicar el proyecto web sólo obtengo el frasco proyecto Java en el directorio lib de JBoss, sin que su tarro de dependencias (egSpring) .

¿Qué significa esto? No debería poner nada en el directorio JBOSS/lib. El objetivo de un archivo WAR es que es un artefacto que contiene todas sus dependencias. Si intenta escribir cosas en el directorio JBOSS/lib, lo está haciendo mal.

El archivo WAR debe entrar en el dominio que configura. No es necesario modificar el servidor de la aplicación.

+0

Tengo un script ant que lo hace bien, el problema es el tiempo de desarrollo, quiero empaquetarlo y publicarlo desde eclipse (y luego, por supuesto, depurar la aplicación) – LiorH

+0

Eclipse debería poder hacerlo sin Ant. Si no puede, obtenga un IDE real y descargue IntelliJ. Gestiona todo esto maravillosamente. – duffymo

+0

tienes razón en tu actualización, quise decir el directorio lib del archivo war (bajo WEB-INF) y no el directorio lib de JBoss, por supuesto. Arreglé la descripción de la pregunta, gracias. – LiorH

0

Si he entendido bien el problema es que si se utiliza un proyecto que a su vez depende del proyecto B no obtiene los artefactos del proyecto B pero sólo A.

La cuestión es que su proyecto debe listar TODO lo que necesita en Propiedades -> dependencias del módulo Java EE, que es un mecanismo separado de las exportaciones habituales del proyecto. Probablemente necesites hacer algo de experimentación.

2

He añadido el proyecto de Java a las dependencias del módulo de Java EE en el proyecto web.

Si el propósito es tomar las dependencias (es decir: los archivos JAR/proyectos/etc) del otro proyecto en la ruta de clase en tiempo de ejecución del proyecto actual, entonces sólo de esa manera no funciona . Debe configurar otro proyecto para exportar sus dependencias. Se realiza mediante la pestaña Orden y exportación en las propiedades de la ruta de compilación. Espero que esto ayude.

2

También tenga en cuenta este error informado en Eclipse WTP, que a veces impide que sus dependencias se implementen en WEB-INF/lib, incluso si configuró todo correctamente. Suspiro.

Bug 312897 - Deployment feature doesn't deploy classpath dependencies.

Como yo lo entiendo, de utilizar un JAR en tiempo de compilación en Eclipse y asegúrese de que también está disponible en tiempo de ejecución en el servidor de aplicaciones, que:

  • añadir el JAR su trayectoria de la estructura
  • Marque el JAR como una dependencia del módulo de EE exportados

Si necesita de JAR que son necesarios por otro proyecto que está utilizando , Los enumeraría personalmente como dependencias explícitas en la ruta de compilación y también las agregaría a las dependencias del módulo exportado.

Pero no tome mi respuesta a su valor nominal como me encontré con este mensaje durante la búsqueda de la razón por la que estoy recibiendo errores noClassDefFound en mi proyecto Eclipse ...;)

4

Yo sé que ha pasado cuatro años desde que el último mensaje, y tal vez esta opción no estaba disponible en ese entonces, pero aquí es lo que funcionó para mí:

  1. Ir a Web Proyecto-> Propiedades
  2. Asamblea despliegue
  3. Utilice el botón 'Añadir' para añadir su dependencia proyecto
  4. Ir a proyecto-> Propiedades para el proyecto que está en función de
  5. Deployment Assembly
  6. Utilice el botón 'Agregar' para agregar las dependencias de la biblioteca en tiempo de ejecución del proyecto
  7. Proyecto web-> Ejecutar como ..-> Ejecutar en servidor y funcionó para mí

Ten en cuenta que los pasos 4-6 que significa que si estás usando Eclipse para construir su archivo jar, que ahora incluirá sus bibliotecas dependientes en el frasco.

Gracias a rodgarcialima por ayudarme a llegar al paso 3.

+0

Hola George, ¿hay alguna otra manera de hacer que la biblioteca de proyectos referenciada se copie en el proyecto web? –

+0

¿Qué tal si creamos archivos war y necesitamos otros proyectos para incluir? – Niamath

Cuestiones relacionadas