从Eclipse 3.5中在Tomcat 6上运行Spring + Maven2项目时出现ClassNotFoundException

时间:2010-04-07 19:33:18

标签: eclipse spring tomcat maven-2 m2eclipse

尝试从Eclipse中启动Web项目时,我得到:


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 x64时,项目开始失败。该项目使用相同的配置在WinXP上工作。

在谷歌上搜索我发现帖子声称要转到项目属性 - > Java EE模块依赖项并检查 Maven依赖项框可修复此问题。可悲的是,它对我没用。

我正在使用Spring 2.5.6,Maven2,Eclipse 3.5(使用m2e 0.10.0插件),Tomcat 6和Java 6在Fedora 12 x64上运行。

有没有人见过这个问题?

如果有帮助,这是我的.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之外构建或运行项目时没有任何问题。

4 个答案:

答案 0 :(得分:19)

您的.classpath似乎有Eclipse IAMM2Eclipse个内容。我会做一些清理工作:

  • 只使用其中一个插件(我建议使用M2Eclipse)。
  • 从Eclipse工作区删除项目,删除.classpath.project并再次将项目导入为Maven项目。

更新要获得M2Eclipse的WTP支持,您需要从m2eclipse Extras更新站点安装 Maven Integration for WTP http://download.eclipse.org/m2e-wtp/releases/,如下图所示:

enter image description here

答案 1 :(得分: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中配置它。

答案 2 :(得分:4)

请注意,安装WTP集成的步骤已更改。

请参阅:Maven/Tomcat Projects In Eclipse Indigo/3.7

答案 3 :(得分:1)

不时面对同样的问题。

由于一些奇怪的原因,这个问题可以通过这种方式修复

1)右键单击项目Maven - &gt;禁用Maven依赖项

2)右键单击项目Maven - &gt;启用Maven依赖项