wake-up-neo.com

Tomcat löst ClassNotFound-Ausnahmen für Klassen in anderen offenen Eclipse-Projekten aus

Ich habe eine Eclipse-Projektstruktur, die ungefähr so ​​aussieht:

Eclipse
    project a
    project b

Alle diese Projekte sind Maven-Projekte. Projekt B ist ein Eclipse-WTP-Projekt und enthält Projekt A als Abhängigkeit. Ich verwende das m2Eclipse-Plugin.

Wenn ich Project B für Tomcat bereitstelle (alles von Eclipse aus), werden immer Fehler ausgegeben, die besagen, dass es keine Klassen aus Project A finden kann. Der einzige Weg, den ich lösen kann, ist das close Project A in Eclipse und ein mvn install befehl, daher wird Projekt A an dieser Stelle wie jede andere Abhängigkeit behandelt.

Ich möchte nicht immer wieder Projekt A öffnen und schließen müssen, wenn ich Änderungen daran vornehme (was in dieser Phase häufig vorkommt). 

Ich habe versucht, Project A zum Build-Pfad von Project B hinzuzufügen. Dies scheint jedoch nicht der Trick zu sein. Wieder funktioniert es nur, wenn ich das Projekt in Eclipse schließe, sodass es wie eine normale Mavenabhängigkeit behandelt wird. 

Zur Information Ich benutze die Helios-Version von Eclipse. Projekt B ist ein Frühjahrsprojekt, daher fällt Tomcat natürlich um, wenn alle Bohnen importiert werden.

Hat jemand irgendwelche Vorschläge? Danke vielmals.

21
Ben J

Der Grund, dass Tomcat Ihre Klassen nicht finden kann, ist, dass die Projektabhängigkeit in Eclipse von Tomcat nicht erkannt wird. Um das Problem zu beheben, können Sie den bin-Ordner von Projekt a zum Tomcat-Klassenpfad der aus Projekt b ausgeführten App hinzufügen.

5
rsp

Was Sie tun müssen, ist folgendes:

  1. In Eclipse gehen Sie zu Window> Show View> Servers> und öffnen Sie die Registerkarte Servers
  2. Doppelklicken Sie unter Server auf den gewünschten Server
  3. Diese Aktion sollte ein Fenster mit dem Titel Übersicht öffnen, in dem sich der ausgewählte Server in der TAB befindet
  4. In diesem Fenster wählen Sie: Startkonfiguration öffnen und klicken Sie auf den Link.
  5. Wählen Sie im Fenster Konfiguration bearbeiten die Registerkarte Classpath aus
  6. Wählen Sie im Textfeld ClassPath die Zeile aus: Benutzereinträge
  7. Drücken Sie nun den Button rechts: Projekte hinzufügen
  8. Wählen Sie im daraufhin angezeigten Fenster für die Projektauswahl das externe Projekt aus, das der Server per Klick finden soll.
  9. Schließen Sie diese Fenster, indem Sie auf Anwenden klicken und dann OK anklicken, wenn Sie den Stapel aufarbeiten
  10. Starten Sie Ihren Server im Übersichtsfenster neu

Du solltest bereit sein zu gehen. Es ist eigentlich nur eine 2-minütige Übung. Viel Glück

75
Jalkin

Wenn Sie zu den Projekteigenschaften gehen, wählen Sie den Eintrag "Bereitstellungsassembly", klicken Sie auf "Hinzufügen ..." und wählen Sie "Projekt". Sie können das abhängige Projekt hinzufügen, und das Problem sollte gelöst sein.

32
Thomas

Klicken Sie mit der rechten Maustaste auf das Webprojekt, das dem Container-Server hinzugefügt wird, und wählen Sie Maven und anschließend Arbeitsbereichauflösung deaktivieren aus. Dann erscheint Ihr Abhängigkeitsprojekt wie alle anderen Abhängigkeiten als Glas. 

Klicken Sie mit der rechten Maustaste auf WebProject -> Maven -> Workspace-Auflösung deaktivieren. 

5

Haben Sie die m2Eclipse-Erweiterung installiert, die sich mit WTP auskennt? Ohne es funktioniert m2e für WTP-Projekte nicht richtig. Sieh dir das an:

https://docs.sonatype.org/display/M2Eclipse/WTP+mini+howto

Einfacher Weg :

Run -> Run Configurations... -> Classpath

0
Mehdi LAMRANI