2012-06-18 2 views
6

Ich habe ein Problem bei der Bereitstellung einiger Librarys (JAR-Dateien) von Drittanbietern, die ich bei der Bereitstellung meiner dynamischen Webanwendung mit Tomcat 6 und Eclipse verwende.Eclipse Web-App-Bereitstellung mit Tomcat: Bereitstellen der Abhängigkeiten mehrerer Projekte?

Bitte beachten Sie, dass ich in einem Setup, in dem das Webanwendungsprojekt direkt von diesen JARs abhängt, dies tun kann.

jedoch in meinem Setup, ich habe zwei Eclipse-Projekte:

  • Kern ist eine Klassenbibliothek und hängt davon ab, sagen wir, a.jar.
  • Web ist die Webanwendung und hängt von Kern ab.

In den Projekteinstellungen von Web, in der Deployment Assembly Kategorie I Kern, so Eclipse-hinzugefügt haben (oder Tomcat - ich bin mir nicht ganz sicher, wer der verantwortliche Schauspieler hier) ist Put core.jar in das Verzeichnis libs meiner Webanwendung.

Das Problem ist: Wenn ich die Web-Anwendung ausprobieren, ein NoClassDefFoundError ausgelöst wird, wenn Kern Klassen von a.jar zugreift. Was soll ich dagegen tun? Ich glaube nicht, dass a.jar in die Deployment Assembly Einstellungen Seite meiner Web-Anwendung setzen ist die richtige Lösung, da sie keine Relevanz für das Web Projekt sein sollte, was das Kern Projekt abhängt.

Grundsätzlich suche ich nach einer Möglichkeit, Eclipse (Tomcat?) Zu konfigurieren, um die Abhängigkeiten von core in core.jar einzubetten. Das Problem dabei ist, dass core.jar automatisch generiert wird, wenn ich mein web Projekt bereitstellen.

Hilfe wird sehr geschätzt. Vielen Dank im Voraus!

Antwort

8

Nun, ich habe die Antwort mittlerweile alleine gefunden.

Für in Zukunft die Forderungen der Lektüre dieses ich Schritt für Schritt erklären, die Semantik ich in my original message eingeführt:

Öffnen Sie zunächst die Eigenschaften Seite Ihres Kern Projekt und navigieren Registerkarte auf die ‚Bibliotheken‘ der 'Java Build Path' Einstellungen:

enter image description here

Stellen Sie sicher, Ihre Klassenbibliothek a.jar, Ihr Kern Projekt hängt von hinzufügen, über ‚Ad d JARs ... ". Gehen Sie dann zum Tab "Bestellung und Export" und aktivieren Sie das gerade hinzugefügte a.jar für den Export.

enter image description here

gehen dann auf die 'Deployment Assembly' Einstellungen und auch a.jar hier, indem Sie zuerst hinzufügen, auf 'Hinzufügen ...', dann auf 'Java Build Path Entries' und schließlich a.jar auswählen. Stellen Sie sicher, ‚../‘ als deploy Pfad eingeben, für a.jar:

enter image description here

Jetzt können Sie mit Ihrem Kern Projekt fertig sind. Nun öffnen Sie die Seite ‚Projekte‘ der ‚Java Build Path‘ Einstellungen für Ihr Web Projekt und fügen Sie Ihr Kern Projekt, indem Sie auf ‚Hinzufügen ...‘:

enter image description here

Schließlich navigieren um die Einstellungen Seite ‚Deployment Assembly‘, drücken Sie auf ‚hinzufügen ...‘, dann nehmen Sie ‚Projekt‘ und wählen Sie Ihren Kern Projekt auf dem nächsten Bildschirm:

enter image description here

Du bist fertig. Keine Notwendigkeit, Ihre Kern Abhängigkeiten zu Ihrem Web Projekt hinzuzufügen.

0

Soweit ich weiß, macht Eclipse es nicht für Sie. Projektabhängigkeiten sind für die Kompilierzeit. Laufzeitenabhängigkeiten, die sich über mehrere Projekte erstrecken, sollten von Ihnen erledigt werden. Ein Trick, mit dem Sie Benutzerbibliotheken erstellen können. Gehe zu Einstellungen -> Java -> Build Path -> Benutzerbibliotheken. Erstellen Sie eine neue Benutzerbibliothek. Fügen Sie alle Jars hinzu, von denen Ihr Kernprojekt abhängt. Fügen Sie es als Abhängigkeit von "Core" - und "Web" -Projekten hinzu. Um das zu tun ,, direkt am Projekt klicken -> Build Path -> Konfigurieren bauen Pfad -> Registerkarte Bibliotheken -> Bibliothek hinzufügen ...

hoffe, das hilft

0

ich Maven schlage vor, mit denen kompiliert automatisch die jar Dateien für Sie und Eclipse arbeitet mit Maven auch sehr gut.

Verwandte Themen