java中的java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener

我正在做一个简单的Spring MVC应用程序(不使用maven),它将在浏览器上打印hello world。 它是eclipse中的动态项目,因此我将所有必需的jar文件放在构建路径以及WEB-INF/lib文件夹中

我尝试了两种解决方案,但都没有用。

解决方案我发现:

  1. 清理tomcat工作目录
  2. 把spring-mvc / spring-web.jar jar文件放在lib中

这是我的web.xml

   Spring MVC Application  mvc-dispatcher org.springframework.web.servlet.DispatcherServlet 1   mvc-dispatcher /   contextConfigLocation /WEB-INF/mvc-dispatcher-servlet.xml   org.springframework.web.context.ContextLoaderListener   

并且在配置contextLoaderListener时没有拼写错误,那么问题是什么,是否还有其他解决方案

 Jan 20, 2014 8:16:39 PM org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina Jan 20, 2014 8:16:39 PM org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.11 Jan 20, 2014 8:16:40 PM org.apache.catalina.core.StandardContext listenerStart 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:4618) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5184) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5179) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Jan 20, 2014 8:16:40 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: Skipped installing application listeners due to previous error(s) Jan 20, 2014 8:16:40 PM org.apache.catalina.core.StandardContext startInternal SEVERE: Error listenerStart Jan 20, 2014 8:16:40 PM org.apache.catalina.core.StandardContext startInternal SEVERE: Context [/SpringSample] startup failed due to previous errors Jan 20, 2014 8:16:40 PM org.apache.coyote.AbstractProtocolHandler start INFO: Starting ProtocolHandler ["http-bio-8081"] Jan 20, 2014 8:16:40 PM org.apache.coyote.AbstractProtocolHandler start INFO: Starting ProtocolHandler ["ajp-bio-8009"] Jan 20, 2014 8:16:40 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 4010 ms 

最终我收到404错误,因为我的服务无法加载

我在Eclipse中遇到了同样的问题。 当我做一个maven clean install并将生成的WAR文件移动到我的Tomcat webapp文件夹时,它将运行没有问题。 但是,为了调试我想在Eclipse中运行,但它会抛出以下错误。

 SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener 

我google了一下,直到找到以下博文。

http://commonexceptions.blogspot.com/2014/01/java.html

正如作者解释的那样:

当我没有将maven依赖项添加到构建路径时,会导致此exception。 我正在使用eclipse与maven,因此必须在构建路径中包含maven依赖项,如下所述。

请参阅解决方案的post。 这是一个简单的eclipse Deployment Assembly配置修复。 花了我大约30秒,现在我可以在Eclipse中调试我的Spring webapp。

以下是post的相关步骤:

在项目Web部署程序集中添加Maven依赖项:

  • 打开项目属性(例如:在项目浏览器中右键单击项目名称以选择“属性”)。
  • 选择“部署程序集”。
  • 点击右侧导航栏中的“添加…”按钮。
  • 从Directive Type菜单中选择“Java Build Path Entries”,然后单击“Next”。
  • 从Java Build Path Entries菜单中选择“Maven Dependencies”
  • 单击“完成”。
  • 现在应该将“Maven依赖项”添加到Web部署程序集中,它应该运行。

使用Eclipse WDT并使用未修改且以前工作的项目时:

  • 如果Tomcat正在运行Stop it
  • 打开“服务器”视图:窗口然后选择“显示视图”,然后选择“其他”>服务器>服务器
  • 右键单击Tomcat服务器,然后选择“清除Tomcat工作目录”。
  • 右键单击Tomcat服务器,然后选择“清除”
  • 重新启动Tomcat服务器

上述解决方案应解决该exception。

尝试将spring-web.jar文件直接放在WEB-INF / lib(WEB-INF / lib / spring-web.jar)中,而不是放在WEB-INF / lib / spring-mvc / spring-web.jar中

如果您正在创建没有maven的简单项目,则需要按照以下步骤操作,

  1. 下载所需的jar文件,例如我使用的是spring 4,所以我从Index of release下载了文件

  2. 然后在WebContent / WEB-INF / lib文件夹中添加此文件。

  3. 在构建路径中添加jar文件(在eclipse中:右键单击项目 – >属性 – > Java构建路径 – >添加JAR …)

这将避免org.springframework.web.context.ContextLoaderListenerexception。

如果你有Maven启动并运行,我有一个非常好的方法来帮助你学习Spring MVC。

如果是这样:去你的命令行(Cygwin)我用…

mvn archetype:generate它将要求一个’原型号’。 对你…类型16输入组ID,它只是主包。 输入Artifact ID,它是您的项目名称。 SNAP-SHOT —只需输入和版本一样。 包 – 与您的组ID名称相同。 EX:com.spring输入字母’y’确认,然后按enter键。 在您的工作区目录中完成上述所有操作后。 这样就在那里创造了。 你可以用“mvn eclipse:eclipse”在Eclipse中加载它或者你可以导入它。 我更喜欢老式的导入现有项目。

在所有配置(基于Java)方面,一切都将为您“设置”,这对您有好处。 它将具有您在pom.xml中已经存在的所有Maven依赖项。 如果需要,您可以添加或取出它。

这里的要点是你已经有一个正在运行的项目,你可以从那里玩它。 我首先创建了这样的所有项目并删除了我不需要的内容并添加了我做的内容然后从那里开始。

祝你好运!!!

这是一个依赖性问题,工件中缺少一些依赖项。 我在IntelliJ中的解决方案:

右键单击项目名称 – >打开模块设置 – >问题 – >向工件添加缺少的依赖项

重启服务器(我的情况是tomcat)

希望能帮助到你