it-swarm.com.de

Tomcat & Spring Web - Klasse wurde nicht gefunden

Ich erhalte die folgende Ausnahme, wenn ich versuche, Tomcat über Eclipse zu starten (über Rechtsklick auf Projekt, Ausführen als -> Auf Server ausführen).

SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
Java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1676)
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1521)
    at org.Apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.Java:415)
    at org.Apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.Java:397)
    at org.Apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.Java:118)
    at org.Apache.catalina.core.StandardContext.listenerStart(StandardContext.Java:4660)
    at org.Apache.catalina.core.StandardContext$1.call(StandardContext.Java:5226)
    at org.Apache.catalina.core.StandardContext$1.call(StandardContext.Java:5221)
    at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
    at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
    at Java.lang.Thread.run(Thread.Java:662)
Jun 12, 2011 8:46:11 PM org.Apache.catalina.core.StandardContext listenerStart

Ich baue mein Projekt mit Maven (m2Eclipse). Ich habe Spring-Bibliotheken die notwendigen Abhängigkeiten hinzugefügt, und ich kann die Datei spring-web.jar im lib-Verzeichnis des letzten Artefakts (das die Klasse enthält) sehen. Wenn ich die Anwendung außerhalb von IDE bereitstelle, funktioniert es einwandfrei.

Jeder Hinweis darauf, warum dies geschieht, wird sehr geschätzt.

33
Devanath Rao

Das gleiche Problem hatte ich vor einigen Tagen mit m2Eclipse (ohne WTP-Integration über m2Eclipse-Extras verfügbar) auf Eclipse Indigo. Ich habe ein Maven-Webmodul erstellt und die Facette Dynamic Web Module manuell hinzugefügt. Als ich es auf dem Eclipse WST Tomcat Server bereitstellte, schien es, als würden meine Maven-Abhängigkeiten nicht auf den Server verschoben, wenn das Projekt darauf veröffentlicht wird.

Die Lösung war einfach. Klicken Sie im Projekt-Explorer mit der rechten Maustaste auf Ihr Webprojekt -> wählen Sie 'Eigenschaften'. Wählen Sie unter Projekteigenschaften "Bereitstellungsassembly" aus. 

Auf der Eigenschaftsseite der Bereitstellungsassembly wird der Inhalt angezeigt, der von Eclipse als zusammengestelltes Artefakt auf dem Server veröffentlicht wird. Sie müssen Eclipse mitteilen, dass auch alle Ihre Maven-Abhängigkeiten veröffentlicht werden sollen.

Klicken Sie dazu auf die Schaltfläche "Hinzufügen" und wählen Sie "Java Build Path Entries" aus. Klicken Sie auf Weiter und wählen Sie Maven-Abhängigkeiten aus. Dadurch werden die Maven-Abhängigkeits-JAR-Dateien im Ordner lib veröffentlicht, wenn Eclipse Ihr Projekt auf dem WST-Server veröffentlicht.

Dieser Ansatz hat für mich funktioniert.

79
Yohan Liyanage

Der einfachste Weg, um herauszufinden, was Eclipse in Ihre Kriegsdatei für Server-Bereitstellungen einfügt, ist ein Rechtsklick -> Exportieren -> WAR-Datei. Sie können dies dann dekomprimieren und sehen, was sich darin befindet.

Wenn Sie ".settings/org.Eclipse.wst.common.component" öffnen, sollten Sie die Definition der Web-Tools webapp sehen und Folgendes sehen:

<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="MyApp">
    <wb-resource deploy-path="/" source-path="/src/main/webapp"/>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/Java"/>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
    <property name="Java-output-path" value="target/classes"/>
    <property name="context-root" value="MyApp"/>
</wb-module>
</project-modules>

Stellen Sie sicher, dass in Ihrem Build-Pfad in Eclipse "Maven-Abhängigkeiten" in Bibliotheken angezeigt wird. Die letzten Versionen des m2Eclipse-Plugins und WST sollten die Maven-Abhängigkeiten automatisch aufheben und in WEB-INF/lib in Ihrer Kriegsdatei ablegen.

Zu guter Letzt möchten Sie vielleicht die neueste Version von SpringSource Tool Suite (STS) abholen. STS bietet eine Reihe guter Funktionen, darunter die Bündelung der neuesten m2Eclipse und WST. Sie können es immer noch mit Tomcat (oder ihrer Tomcat-Version) verwenden, und es enthält einige Archetypen und Tutorials, damit eine Webapp schnell zur Verfügung steht.

Genießen!

4
Al Baker

Fügen Sie diese Dateien (welche Version Sie gerade verwenden) hinzu

Apache-Tomcat-8.0.35\lib 

ordner (und starten Sie Ihren Server neu):

spring-aop-4.0.1.RELEASE.jar
spring-beans-4.0.1.RELEASE.jar
spring-context-4.0.1.RELEASE.jar
spring-core-4.0.1.RELEASE.jar
spring-expression-4.0.1.RELEASE.jar
spring-web-4.0.1.RELEASE.jar
spring-webmvc-4.0.1.RELEASE.jar
0
Shahriar