我正在做一个简单的Spring MVC应用程序(不使用maven),它将在浏览器上打印hello world。它是eclipse中的动态项目,因此我将所有必需的jar文件放在构建路径以及WEB-INF/lib
文件夹
我尝试了两种解决方案,但两种方法都没有效果。
我找到的解决方案:
这是我的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<display-name>Spring MVC Application</display-name>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
并且在配置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错误,因为我的服务无法加载
答案 0 :(得分:25)
我在Eclipse中遇到了同样的问题。当我做一个maven clean install并将生成的WAR文件移动到我的Tomcat webapp文件夹时,它将运行没有问题。但是,为了调试我想在Eclipse中运行,但它会抛出以下错误。
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
我搜索了一下,直到找到以下博文。
http://commonexceptions.blogspot.com/2014/01/java.html
正如作者所解释的那样:
当我没有添加maven依赖项时,会导致此异常 构建路径。我和maven一起使用eclipse,所以不得不包括 构建路径中的maven依赖关系如下所述。
查看解决方案的帖子。这是一个简单的eclipse Deployment Assembly配置修复。花了我大约30秒,现在我可以在Eclipse中调试我的Spring webapp。
以下是帖子中的相关步骤:
在项目Web部署程序集中添加Maven依赖项:
使用Eclipse WDT并使用未经修改且以前工作的项目时:
上述解决方案应该解决异常。
答案 1 :(得分:2)
尝试将spring-web.jar文件直接放在WEB-INF / lib(WEB-INF / lib / spring-web.jar)中,而不是放在WEB-INF / lib / spring-mvc / spring-web中的.jar
答案 2 :(得分:1)
如果您正在创建没有maven的简单项目, 需要遵循以下步骤,
下载所需的jar文件,例如我使用的是Spring 4,因此我从Index of release
然后将此文件添加到 WebContent / WEB-INF / lib 文件夹中。
在构建路径中添加jar文件(在eclipse中:右键单击项目 - &gt;属性 - &gt; Java构建路径 - &gt;添加JAR ...)
这将避免 org.springframework.web.context.ContextLoaderListener 例外。
答案 3 :(得分:1)
如果你有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依赖项。如果需要,您可以添加或删除它。
这里的要点是你已经有一个正在运行的项目,你可以从那里玩它。我首先创建了这样的所有项目并删除了我不需要的项目并添加了我做的事情然后从那里开始。
祝你好运!!!答案 4 :(得分:1)
这是一个依赖性问题,工件中缺少某些依赖项。 我在IntelliJ中的解决方案:
右键单击项目名称 - &gt;打开模块设置 - &gt;问题 - &gt;向工件添加缺少的依赖项
重启服务器(我的情况是tomcat)
希望有所帮助