Spring Tomcat未加载调度程序Servlet(ClassNotFoundException)
我试着根据上述问题的答案进行搜索和更改,但不起作用。我没有使用任何构建工具 所有jar文件jstl1.2、common loggings 1.1.3和Spring 3.2.3 jar都位于WebContent/WEB-INF/lib中 jsp是一个受欢迎的文件,它在Eclipse浏览器中正确显示,但当我单击控制器的超链接时,404请求的资源不可用。从日志来看,tomcat似乎没有加载DispatcherServlet 我尝试重新启动/清理并发布tomcat 使用Tomcat7、jre7、EclipseKepller 4.0和JavaEE2.0 谢谢你的帮助 Tomcat日志:Spring Tomcat未加载调度程序Servlet(ClassNotFoundException),spring,tomcat,spring-mvc,Spring,Tomcat,Spring Mvc,我试着根据上述问题的答案进行搜索和更改,但不起作用。我没有使用任何构建工具 所有jar文件jstl1.2、common loggings 1.1.3和Spring 3.2.3 jar都位于WebContent/WEB-INF/lib中 jsp是一个受欢迎的文件,它在Eclipse浏览器中正确显示,但当我单击控制器的超链接时,404请求的资源不可用。从日志来看,tomcat似乎没有加载DispatcherServlet 我尝试重新启动/清理并发布tomcat 使用Tomcat7、jre7、Ecli
ul 02, 2013 1:16:52 PM org.apache.catalina.core.ApplicationContext log
I**NFO: No Spring WebApplicationInitializer types detected on classpath
Jul 02, 2013 1:16:52 PM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet spring as unavailable
Jul 02, 2013 1:16:52 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /SpringMVC threw load() exception
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet**
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:509)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:137)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5123)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5407)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
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)
Jul 02, 2013 1:16:53 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jul 02, 2013 1:16:53 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jul 02, 2013 1:16:53 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 11462 ms
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>SpringMVC</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
根据堆栈跟踪,您缺少包含DispatcherServlet类的spring-webmvc.jar。尝试再次检查类路径(WEB-INF/lib),以确保jar在那里。通常,在Spring MVC应用程序上,您需要以下JAR:
我还建议您使用依赖关系管理工具(例如:Maven/ivy),否则自己管理jar太难了只需将所有需要的jar文件添加到WEB-INF/lib文件夹中,就可以了。
在本例中,只有找到的DispatcherServlet类尝试使用ctrl+shift+T(在eclipse中)在构建路径中搜索
DispatcherServlet
,并查看结果JAR是否包含在项目中lib@LaabidiRaissi:您好,正如您提到的,它没有显示在项目库中,我确实附加了源代码,但没有工作。如何确保所有jar都在projectlib中,我将所有jar复制到了WebInf/lib文件夹中。这还不够,还是我们需要做点别的?谢谢你指出我们需要源文件吗?我认为只有.class文件就足够了?右键单击jar-->构建路径-->添加到构建路径(当然是在eclipse中)当然我们只需要二进制jar,但是由于在类路径上找不到该类,因此它没有正确地添加到itI中(WEB-INF/lib)中有上述jar。但它不起作用。我已经添加了eclipse项目浏览器视图。如果您发现有任何问题,请告诉我,它不允许添加图像,但我确信jar存在于您所说的目录中,该目录缺少commons-logging-1.1.1.jar。我已经浪费了将近3个小时…………终于成功了。谢谢
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan
base-package="com.maverick.springmvc.controller" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
package com.maverick.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HelloWorldController {
@RequestMapping("/hello")
public ModelAndView helloWorld() {
System.out.println("test");
String message = "Hello World, Spring 3.0!";
return new ModelAndView("hello", "message", message);
}
}