Also begann ich mit einem Web-Service-Projekt (nur ein dynamisches Webprojekt), das korrekt von Eclipse erstellt und debuggt. Wir haben einen Teil des gemeinsamen Codes herausgezogen, den wir in eine gemeinsam genutzte Bibliothek einfügen möchten. Diese Klassen werden nun in ein separates Jar-Projekt geleitet, auf das das Webprojekt verweist.Eclipse-Debug-Zeit-Klassenpfadproblem: Wie binden Sie die Ausgabe eines abhängigen Projekts in den Laufzeitklassenpfad eines Webprojekts ein?
Auf dem Web-Projekt habe ich Projekt-> Eigenschaften-> Java Build Path-> Projekte-> Hinzufügen und hinzugefügt das Jar-Projekt. Und das hat alle Klassenpfadprobleme der Kompilierzeit korrekt gelöst, und alles baut gut auf. Aber zur Laufzeit, wenn der Tomcat-Server hochfährt, versucht spring, einige der in der JAR-Datei enthaltenen Klassen zu injizieren, und ich bekomme einen NoClassDefFoundError.
Meine Klassen- und Eigenschaftendateien und der Inhalt meines META-INF-Verzeichnisses werden im ./build-Verzeichnis angezeigt, aber mein WEB-INF/lib-Verzeichnis scheint direkt referenziert zu sein, und die Jar-Abhängigkeit funktioniert nicht Sie werden nicht in die Web App Library kopiert.
Was ist die magische Beschwörung, um Eclipse zu sagen, dass das andere Jar-Projekt zur Laufzeit dem Tomcat zur Verfügung stehen muss? Aus unserem Ameisen-Build-Skript bauen wir zuerst das andere Projekt in WEB-INF/lib und alles funktioniert gut, aber nicht für Eclipse-Debugging.
Das scheint der Trick gewesen zu sein, aber ich bin mir nicht sicher, was Sie sagten, dass es ein "Dienstprogramm" Projekt war. Gibt es etwas, das ich in meiner .project-Datei oder in .settings/sehen kann, um mich wissen zu lassen, dass es der richtige Typ ist? –
Hilfsprojekte sind Java-Projekte, obwohl sie eher für den J2EE-Kontext geeignet sind. Sie repräsentieren Ihren Code (keine JARs von Drittanbietern), die in mehreren Projekten in Ihrer Enterprise App verwendet werden. Normalerweise sind dies Klassen, die für mehrere EJBs und häufig auch ein einzelnes Webmodul verwendet werden. –
Normalerweise versetze ich Hilfsprojekte nicht in einfache Java-Projekte, da bei den Hilfsprojekten die Laufzeit-JARs des Servers automatisch zum Klassenpfad hinzugefügt werden. Zum Beispiel könnte ich Datenquellen aus demselben Projekt verwenden, ohne die JARs des Containers zum Build-Pfad hinzuzufügen. –