2010-04-07 10 views
15

laufen Wenn aus Eclipse ein Webprojekt zu starten versucht, erhalte ich:ClassNotFoundException wenn ein Spring + Maven2 Projekt auf Tomcat 6 aus Eclipse 3.5


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:1387) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3877) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:722) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:583) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 

Projekt zu scheitern begann, als ich auf Fedora 12 x 64 geschaltet. Das Projekt arbeitete mit WinXP mit derselben Konfiguration.

um ich Googeln gefunden Beiträge behaupten, dass gehen Projekteigenschaften -> Java EE Modulabhängigkeiten und Überprüfung der Maven Abhängigkeiten Kästchen, um das Problem behebt. Leider hat es nicht für mich funktioniert.

Ich verwende Spring 2.5.6, Maven2, Eclipse 3.5 (mit dem Plugin m2e 0.10.0), Tomcat 6 und Java 6 mit Fedora 12 x64.

Hat jemand dieses Problem gesehen?

Falls es hier hilft, ist meine .classpath Datei


<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="src" output="target/classes" path="src/main/java"/> 
    <classpathentry kind="src" output="target/classes" path="target/generated-sources/gpb"/> 
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/> 
    <classpathentry kind="src" output="target/test-classes" path="src/test/java"/> 

    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> 

    <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"> 
     <attributes> 
      <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> 
     </attributes> 
    </classpathentry> 
    <classpathentry kind="con" path="org.eclipse.iam.jdt.core.mavenClasspathContainer"> 
     <attributes> 
      <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> 
     </attributes> 
    </classpathentry> 
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> 
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> 
    <classpathentry kind="output" path="target/classes"/> 
</classpath> 

Update: Ich habe keine Probleme Gebäude oder das Projekt außerhalb von Eclipse ausgeführt wird.

+0

Nur eine Vermutung: Könnte es becuase org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER und org.eclipse.iam.jdt.core.mavenClasspathContainer Konflikt in irgendeiner Weise sein? –

Antwort

19

Sie scheinen beide Eclipse IAM und M2Eclipse Zeug in Ihrem .classpath. Ich würde eine Bereinigung tun:

  • Verwenden Sie nur eine dieser Plugin (ich schlage vor, mit m2eclipse).
  • Löschen Sie Ihr Projekt aus dem Arbeitsbereich von Eclipse, löschen Sie die .classpath und .project und importieren Sie das Projekt erneut als Maven-Projekt.

Update: mit m2eclipse WTP Unterstützung zu erhalten, müssen Sie die Maven Integration für WTP vom m2eclipse Extra Update-Site installieren: http://download.eclipse.org/m2e-wtp/releases/ wie unten dargestellt:

enter image description here

+0

@pascalthivent, Es scheint, dass ich Eclipse IAM vor dem Wechsel ohne es zu bemerken verwendet habe. Wie auch immer, tat, was Sie vorgeschlagen haben, aber jetzt wird das Projekt von Eclipse nicht wie eine Web App gesehen. Jetzt habe ich nicht einmal die Option * Ausführen als -> Ausführen auf Server *. –

+0

@Elliot Das liegt daran, dass Sie die Maven-Integration für WTP nicht installiert haben, als Sie M2Eclipse installiert haben. Ich werde meine Antwort aktualisieren, um dies zu erfassen. –

+0

Danke Pascal, diese letzte Info hat mein Problem gelöst. Ich habe das Projekt entfernt, die Integration für WTP installiert und das Projekt erneut importiert. Einziges Detail war, dass ich das Maven Plugin deaktivieren, das Projekt in einem Terminal erstellen und das Plugin dann wieder aktivieren musste. Alles funktioniert jetzt reibungslos. Ein Gedanke, es scheint mir, dass Eclipse wirklich hinter NetBeans auf Maven Unterstützung zurückbleibt. Ich fühle mich in Eclipse produktiver, kann es mir aber nicht leisten, Zeit mit solchen Dingen an meinem Arbeitsplatz zu verlieren. Ich denke, dass das Image von Eclipse durch den aktuellen Zustand der Maven Plugins getrübt ist. –

9

I hatte das gleiche Symptom mit einer anderen Ursache. Ich musste meine .classpath-Datei bearbeiten. Der maven-Eintrag:

<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"> 
    <attributes> 
     <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> 
    </attributes> 
</classpathentry> 

... fehlte das Attribut-Tag, das hier gezeigt wird. Als ich das Attribut-Tag hinzugefügt habe, ging das Problem weg. Ich bin sehr neugierig, wie man das in der Eclipse-Ui konfiguriert.

+0

yep ..., die definitiv die Fehlermeldung so etwas Anwendungsbezogene geändert ... Ich denke, es war ein Schritt in die richtige Richtung – Newtopian

+1

ah Danke, das hat bei mir funktioniert, ich habe gerade hinzugefügt und es ist nun ok – tomasb

1

Von Zeit zu Zeit, das Gesicht mit dem gleichen Problem.

Aus irgendeinem seltsamen Grund, dieses Problem auf diese Weise könnte

fixiert

1) Rechter Mausklick auf Projekt Maven -> Deaktivieren Maven Abhängigkeiten

2) Rechter Mausklick auf Projekt Maven -> Aktivieren Maven Abhängigkeiten

+1

Ich habe solche Optionen nicht in Eclipse 3.7 .2, meinst du "Disable Maven Nature"? – Betlista