Unterschied zwischen Deployment-Assembly und J2EE-Modulabhängigkeiten in Eclipse

8

Bei Verwendung eines Eclipse 3.7 Indigo für Java EE-Entwicklers gibt es etwas, das Deployment Assembly genannt wird. Ich könnte bei Google finden und verstanden, dass es ähnlich wie die J2EE Module Abhängigkeiten wo wir das Glas auswählen und das geht und sitzt im EAR-Ordner oder in WEB-INF / lib im Falle von WAR . Jetzt habe ich Zweifel,

Ich habe ein JavaProject Abhängigkeiten . Ich habe alle abhängigen Jars über Klassenpfad Variable hinzugefügt. Jetzt wird das Projekt Abhängigkeiten als Abhängigkeit zu meinem Webprojekt TestWebProject hinzugefügt. Die Kompilierung des Webprojekts ist korrekt, aber während der Laufzeit erhalte ich einen Fehler, weil ein JAR nicht gefunden wurde. Ich könnte dieses Include-Jar in der Deployment-Assembly von Abhängigkeiten Project reparieren, das ein eigenständiges Projekt ist.

Die Frage ist, warum ich das jar in der Deployment-Assembly reparieren musste, da es erstens ein eigenständiges Projekt ist und zweitens, wenn ich diese Deployment-Assembly nicht hätte, wie könnte das behoben werden?

    
chaosguru 20.06.2012, 18:39
quelle

3 Antworten

14
  

Ich könnte bei Google finden und habe verstanden, dass es den Abhängigkeiten des J2EE-Moduls ähnlich ist

Es hieß "J2EE Module Dependencies" bis zu Eclipse 3.5. Nach dieser Version wurde es in "Deployment Assembly" umbenannt. Aber es ist im Falle von Java EE-Webprojekten genauso.

  

Die Frage ist, warum ich das jar in der Deployment-Assembly reparieren musste, seit es ein eigenständiges Projekt ist

Dadurch wird Eclipse automatisch eine JAR-Datei des Projekts erstellen und in /WEB-INF/lib der Bereitstellung des Webprojekts einfügen. Wenn Sie dies nicht tun, ist die JAR-Datei während der Laufzeit der Webanwendung nicht verfügbar, sondern nur während der Kompilierungszeit, und Eclipse erwartet, dass Sie sie bereits an anderer Stelle im Klassenpfad der Laufzeit erstellt und platziert haben, z. Servereigene /lib .

  

Wenn ich diese Bereitstellungsassembly nicht hätte, wie könnte dies behoben werden?

Manuelles Erstellen / Exportieren der JAR und Löschen der eigenen /WEB-INF/lib oder der eigenen /lib der Webanwendung. Die "Deployment Assembly" Konfiguration ist jedoch einfacher und der empfohlene Weg.

Siehe auch:

BalusC 20.06.2012, 19:05
quelle
5

Wenn Sie eine WAR-Datei zusammenstellen, kann Eclipse nicht einfach feststellen, ob die Build-Pfadabhängigkeiten im WAR-Verzeichnis WEB-INF / lib enthalten sind oder ob sie auf dem Klassenpfad Ihres Servers verfügbar sind . Zusätzliche Metadaten sind erforderlich, um zwischen diesen Fällen zu unterscheiden.

Wenn Sie in Ihrer Problemansicht nachsehen, sollten Sie zahlreiche Warnungen sehen, die wie folgt aussehen:

"Klassenpfadeintrag [etwas] wird nicht exportiert oder veröffentlicht ..."

Klicken Sie mit der rechten Maustaste darauf und wählen Sie "Schnellkorrektur". Sie sehen einen Dialog mit verfügbaren Fixes. Einer von ihnen wird etwas sagen wie "Markieren Sie den zugehörigen Klassenpfad Eintrag als Publish / Export Abhängigkeit ...". Verwenden Sie diese Option.

Mit dem obigen Befehl wird die Datei .classpath Ihres Java-Projekts geringfügig geändert, um die Abhängigkeiten für die Einbindung in die Assembly zu kennzeichnen. Sie können testen, ohne zu laufen, indem Sie eine WAR-Datei exportieren und den Inhalt des Ordners WEB-INF / lib überprüfen.

    
Konstantin Komissarchik 20.06.2012 19:04
quelle
0

Build path - Platziere dein jar hier direkt, es wird für die code runtime und die kompilierzeit verfügbar sein.

Deployment-Assembly - eclipse erwartet, dass die Projekte unter diesem Pfad gebündelt und als .jar im Ordner web-inf / lib bereitgestellt werden. Damit ist es sowohl für die Kompilierzeit als auch für die Laufzeit verfügbar. Wenn das Projekt nicht in der Bereitstellungsassembly bereitgestellt wird, ist der Code nur für die Kompilierungszeit verfügbar, Eclipse wird ihn nicht bündeln und für runtime-abhängige Projekte ist der Code nicht verfügbar.

    
Preetham R U 27.07.2015 08:01
quelle