Tomcat和Spring Web – 找不到类Exception org.springframework.web.context.ContextLoaderListener

当我尝试通过Eclipse启动Tomcat时(通过右键单击Project,Run As – > Run on Server),我得到以下exception。

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 

我正在使用Maven(m2eclipse)构build我的项目。 我已经将必要的依赖关系添加到了Spring库中,并且可以在最终构件(包含类)的lib目录中看到spring-web.jar文件。 当我在IDE外部署应用程序时,它工作正常。

任何指针为什么发生这种情况将不胜感激。

Eclipse Indigo上,前几天我遇到了同样的问题,使用m2eclipse(没有通过m2eclipse-extras添加WTP集成)。 我创build了一个Maven Web Module,并手动添加了Dynamic Web Module facet。 当我将它部署在Eclipse WST Tomcat服务器上时,看起来我的Maven依赖关系在发布项目时没有被推送到服务器。

解决scheme很简单。 在项目资源pipe理器中右键单击您的Web项目 – >select“属性”。 在项目属性下,select“部署程序集”。

“部署程序集”属性页面显示将由Eclipse将其作为组合工件发布到服务器的内容。 你需要告诉Eclipse,你也希望所有的Maven依赖都被发布。

要做到这一点,点击“添加”button,然后select“Java构buildpath条目”。 点击Next并selectMaven Dependencies。 这会在Eclipse将项目发布到WST服务器时将Maven依赖项JAR文件发布到lib文件夹。

这种方法为我工作。

告诉Eclipse将把war文件放入服务器部署的最简单方法是右键单击 – > Export – > WAR文件。 然后,您可以解压缩,看看里面有什么。

如果打开“.settings / org.eclipse.wst.common.component”,您应该看到web工具webapp的定义,并看到如下所示:

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

在Eclipse的构buildpath中,确保“Maven Dependencies”出现在库中。 m2eclipse插件和WST的最新版本应该会自动获取Maven的依赖关系,并将它们放在WAR文件的WEB-INF / lib目录下。

最后但并非最不重要的一点,您可能需要考虑购买SpringSource Tool Suite(STS)的最新版本。 STS有很多好的function,包括捆绑最新的m2eclipse和WST。 你仍然可以在Tomcat(或者他们的Tomcat版本)上使用它,并且在那里有一些原型和教程来让webapp快速工作。

请享用!

添加这些文件(无论你正在使用的版本)到

 apache-tomcat-8.0.35\lib 

文件夹(并重新启动您的服务器):

 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