从 Eclipse 3.5 中在 Tomcat 6 上运行 Spring + Maven2 项目时出现 ClassNotFoundException
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2595315/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
ClassNotFoundException when running a Spring + Maven2 project on Tomcat 6 from within Eclipse 3.5
提问by Elliot Vargas
When trying to launch a Web project from within Eclipse I get:
尝试从 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)
Project started to fail when I switched to Fedora 12 x64. The project worked on WinXP with same configuration.
当我切换到 Fedora 12 x64 时,项目开始失败。该项目在具有相同配置的 WinXP 上运行。
Googling around I found posts claiming that going to Project Properties -> Java EE Module Dependenciesand checking the Maven Dependenciesbox fixes the issue. Sadly it didn't worked for me.
谷歌搜索我发现帖子声称转到项目属性 - > Java EE 模块依赖项并检查Maven 依赖项框修复了问题。可悲的是它对我不起作用。
I'm using Spring 2.5.6, Maven2, Eclipse 3.5 (with the m2e 0.10.0 plugin), Tomcat 6 and Java 6 running on Fedora 12 x64.
我正在使用在 Fedora 12 x64 上运行的 Spring 2.5.6、Maven2、Eclipse 3.5(带有 m2e 0.10.0 插件)、Tomcat 6 和 Java 6。
Has anyone seen this problem?
有没有人见过这个问题?
In case it helps here is my .classpath file
如果它有帮助,这里是我的 .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>
Update:I don't have any problems building or running the project outside Eclipse.
更新:我在 Eclipse 之外构建或运行项目没有任何问题。
回答by Pascal Thivent
You seem to have both Eclipse IAMand M2Eclipsestuff in your .classpath. I would do some cleanup:
你似乎有两者的Eclipse IAM和m2eclipse的东西在你的.classpath。我会做一些清理工作:
- Use only one of these plugin (I suggest using M2Eclipse).
- Delete your project from Eclipse's workspace, delete the
.classpathand.projectand Import the project as a Maven project again.
- 仅使用这些插件之一(我建议使用 M2Eclipse)。
- 从 Eclipse 的工作区中删除您的项目,删除
.classpath并.project再次将项目作为 Maven 项目导入。
Update:To get WTP support with M2Eclipse, you need to install the Maven Integration for WTPfrom the m2eclipse Extras update site: http://download.eclipse.org/m2e-wtp/releases/as illustrated below:
更新:要获得 M2Eclipse 的 WTP 支持,您需要从 m2eclipse Extras 更新站点安装WTP的Maven 集成:http: //download.eclipse.org/m2e-wtp/releases/,如下图所示:


回答by darrint
I had the same symptom with a different cause. I had to edit my .classpath file. The maven entry:
我有相同的症状,但原因不同。我不得不编辑我的 .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>
...was lacking the attributes tag shown here. When I added the attributes tag the problem went away. I'm very curious how to configure that in the eclipse ui.
...缺少此处显示的属性标签。当我添加属性标签时,问题就消失了。我很好奇如何在 eclipse ui 中配置它。
回答by rmp
Note that the steps to install the WTP integration have changed.
请注意,安装 WTP 集成的步骤已更改。
回答by user12384512
From time to time, face with same problem.
不时,面临同样的问题。
For some strange reason, this problem could be fixed this way
出于某种奇怪的原因,这个问题可以通过这种方式解决
1) Right mouse click on project Maven -> Disable Maven Dependencies
1) 鼠标右键单击项目 Maven -> Disable Maven Dependencies
2) Right mouse click on project Maven -> Enable Maven Dependencies
2) 鼠标右键单击项目 Maven -> Enable Maven Dependencies

