2010-04-07 63 views
15

運行在Tomcat 6一個Spring + Maven2的項目時,當試圖在Eclipse中啓動Web項目中,我得到:ClassNotFoundException的在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) 

項目開始時,我切換到Fedora 12的64位失敗。該項目使用相同的配置在WinXP上運行。

我周圍的谷歌搜索發現帖子聲稱要項目屬性 - > Java EE的模塊依賴和檢查Maven依賴箱修復該問題。可悲的是,它並沒有爲我工作。我使用Spring 2.5.6,Maven2,Eclipse 3.5(帶有m2e 0.10.0插件),運行在Fedora 12 x64上的Tomcat 6和Java 6。

有沒有人看到這個問題?

在情況下,它可以幫助這裏是我的.classpath文件


<?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> 

更新:我沒有任何問題,建築物或運行Eclipse之外的項目。

+0

只是一個猜測:它可能是因爲org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER和org.eclipse.iam.jdt.core.mavenClasspathContainer以某種方式衝突嗎? – 2010-04-07 19:42:43

回答

19

您似乎在您的.classpath中都有Eclipse IAMM2Eclipse的東西。我會做一些清理:

  • 只使用這些插件之一(我建議使用M2Eclipse)。
  • 從Eclipse的工作區中刪除您的項目,刪除.classpath.project,然後再次將該項目導入爲Maven項目。

更新:要獲得m2eclipse的WTP支持,你需要從m2eclipse的額外更新站點安裝Maven的集成WTPhttp://download.eclipse.org/m2e-wtp/releases/如下圖所示:

enter image description here

+0

@pascalthivent,似乎我在開關之前使用Eclipse IAM而沒有注意到。無論如何,做了你的建議,但現在該項目不像Eclipse Web App那樣被Eclipse看到。所以現在我甚至沒有* Run As - > Run on Server *選項。 – 2010-04-07 21:00:58

+0

@Elliot這是因爲您在安裝M2Eclipse時沒有安裝用於WTP的Maven集成。我會更新我的答案來說明這一點。 – 2010-04-07 21:50:31

+0

謝謝帕斯卡,那最後的信息解決了我的問題。我刪除了該項目,安裝了WTP集成並重新導入了該項目。只有細節是我必須禁用Maven插件,在終端中構建項目,然後再次啓用插件。現在一切正常。有人認爲,在我看來,Eclipse在Maven支持上確實落後於NetBeans。我在Eclipse中感覺效率更高,但不能在工作場所中浪費時間來處理類似的事情。我認爲Eclipse的圖像被Maven插件的當前狀態所玷污。 – 2010-04-08 14:13:33

9

我有不同原因的相同症狀。我不得不編輯我的.classpath文件。 maven條目:

<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> 

...缺少此處顯示的屬性標記。當我添加屬性標籤時,問題就消失了。我非常好奇如何在eclipse ui中配置它。

+0

是... ...明確地改變了錯誤信息,所以應用程序相關的東西......我想這是一個正確的方向移動 – Newtopian 2011-10-27 06:57:31

+1

啊謝謝你這爲我工作,只是增加了並且它現在確定 – tomasb 2012-07-19 11:33:44

1

不時,臉上帶着同樣的問題。

一些奇怪的原因,這個問題可能是固定的這樣

1)項目的Maven點擊鼠標右鍵 - >禁用Maven依賴於項目的Maven

2)點擊鼠標右鍵 - >啓用Maven依賴

+1

我在Eclipse 3.7中沒有這樣的選項.2,你的意思是'禁用Maven Nature'嗎? – Betlista 2012-05-23 08:20:46

相關問題