严重: Exception starting filter struts2
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1493)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:269)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4038)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4692)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:701)
at org.apache.catalina.startup.Catalina.start(Catalina.java:585)
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:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
2011-3-18 18:19:58 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2011-3-18 18:19:58 org.apache.catalina.core.StandardContext start
严重: Context [/struts2] startup failed due to previous errors
2011-3-18 18:19:58 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2011-3-18 18:19:58 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2011-3-18 18:19:58 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/31  config=null
2011-3-18 18:19:58 org.apache.catalina.startup.Catalina start
信息: Server startup in 4595 ms
我用myeclipse 8.5M1  struts-2.2.1.1的版本   老是启动tomcat-6.0.30的时候 控制台报错  大侠 给指导一下 web.xml 代码是:<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
   <filter-name>struts2</filter-name>
   <filter-class>
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
   </filter-class>
</filter><filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern> 
</filter-mapping>
 
</web-app>-------------------------
struts.xml   代码是:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
    
    <struts>    
    <package name="struts2" extends="struts-default">
        <action name="login" class="com.test.struts2.LoginAction">
           <result name="success"></result>
        </action>  
    </package>
    </struts>
----------------------引入的包 :
commons-logging-1.0.4.jar
xwork-core-2.2.1.1.jar
struts2-core-2.2.1.1.jar
ognl-3.0.jar
freeer-2.3.16.jar
commons-io-1.3.2.jar
commons-fileupload-1.2.1.jar
javassist-3.7.ga.jar

解决方案 »

  1.   

    你配置的FilterDispatcher类在哪?
      

  2.   

    你找找你的jar中是否有org.apache.struts2.dispatcher.FilterDispatcher
    还它在哪里使用了找不到
      

  3.   

    2.5之前的版本应该这么配吧<filter>       <filter-name>struts2</filter-name>       <filter-class>           org.apache.struts2.dispatcher.FilterDispatcher       </filter-class>    </filter>
      

  4.   

    2。之后的版本好像可以用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    这个作为过滤器类吧
      

  5.   

    org.apache.struts2.dispatcher.FilterDispatcher
    这是struts2.2的核心拦截器!而你配置的确是这个org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    ,改过来试试看!
    struts2-core-2.2.1.1.jar这个包里面两个拦截器都有,为什么使用第一个,而不是使用第二个,我目前还在研究中。
      

  6.   

    在网上找到的区别。FilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.! 
    StrutsPrepareAndExecuteFilter是自2.1.3开始就替代了FilterDispatcher的.! 
    这样的改革当然是有好处的.! 
    为什么这么说.? 应该知道如果我们自己定义过滤器的话, 是要放在strtus2的过滤器之前的, 如果放在struts2过滤器之后,你自己的过滤器对action的过滤作用就废了,不会有效!除非你是访问jsp/html! 
    那我现在有需求, 我必须使用Action的环境,而又想在执行action之前拿filter做一些事, 用FilterDispatcher是做不到的.! 
    那么StrutsPrepareAndExecuteFilter可以把他拆分成StrutsPrepareFilter和StrutsExecuteFilter,可以在这两个过滤器之间加上我们自己的过滤器.! 
    给你打个比喻, 现在有病人要做手术, 现在struts2要做两件事, 搭病床(环境),执行手术.! 那么打麻药的工作呢.? 不可能要病人站着打吧, 所以必须有病床的环境,打完麻药之后再动手术.! 这个比喻非常形象了.!本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/s_ongfei/archive/2010/08/13/5811070.aspx
      

  7.   

    别人的源代码分析package org.apache.struts2.dispatcher.ng.filter; import org.apache.struts2.StrutsStatics; 
    import org.apache.struts2.dispatcher.Dispatcher; 
    import org.apache.struts2.dispatcher.ng.PrepareOperations; 
    import org.apache.struts2.dispatcher.ng.ExecuteOperations; 
    import org.apache.struts2.dispatcher.ng.InitOperations; 
    import org.apache.struts2.dispatcher.mapper.ActionMapping; import javax.servlet.*; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 
    import java.io.IOException; /** 
    * Handles both the preparation and execution phases of the Struts dispatching process.  This filter is better to use 
    * when you don't have another filter that needs access to action context information, such as Sitemesh. 
    */ 
    public class StrutsPrepareAndExecuteFilter implements StrutsStatics, Filter { 
        private PrepareOperations prepare; 
        private ExecuteOperations execute; 
    //初始化过滤器
        public void init(FilterConfig filterConfig) throws ServletException { 
            InitOperations init = new InitOperations(); //初始化辅助对象,封装了初始化的一些操作
            try { 
                FilterHostConfig config = new FilterHostConfig(filterConfig); //对filterConfig进行封装
                init.initLogging(config); //通过config,初始化内部Struts的记录
                Dispatcher dispatcher = init.initDispatcher(config); //通过config,创建并初始化dispatcher             init.initStaticContentLoader(config, dispatcher); //通过config和dispatcher,初始化与过滤器相关的静态内容加载器            prepare = new PrepareOperations(filterConfig.getServletContext(), dispatcher); //通过config和dispatcher,创建request被处理前的系列操作对象
                execute = new ExecuteOperations(filterConfig.getServletContext(), dispatcher);//通过config和dispatcher,创建处理request的系列操作对象
     
            } finally { 
                init.cleanup(); //清空ActionContext
            }     }     public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {         HttpServletRequest request = (HttpServletRequest) req; 
            HttpServletResponse response = (HttpServletResponse) res;         try { 
                prepare.createActionContext(request, response); //创建ACTIONCONTEXT,并初始化Theadlocal             prepare.assignDispatcherToThread(); //指派dispatcher给Theadlocal
                prepare.setEncodingAndLocale(request, response); //设置request的编码和LOCAL
                request = prepare.wrapRequest(request); //封装request
                ActionMapping mapping = prepare.findActionMapping(request, response); //查找并选择创建ActionMapping
                if (mapping == null) { //如果映射不存在
                    boolean handled = execute.executeStaticResourceRequest(request, response); //试图执行一个静态资源的请求
                    if (!handled) { 
                        chain.doFilter(request, response); 
                    } 
                } else { //如果存在映射
                    execute.executeAction(request, response, mapping); //执行action
                } 
            } finally { 
                prepare.cleanupRequest(request); //清除request的Threadlocal
            } 
        }     public void destroy() { 
            prepare.cleanupDispatcher(); 
        } 
    }
      

  8.   

    肯定错误啊!应该这样配置!
    web.xml 代码是:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
    </context-param>
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>


    <filter>
    <filter-name>struts</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
    <filter-name>struts</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    </web-app>
      

  9.   

    <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
      org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  </filter-class>
    </filter>
    不是这个吧
      

  10.   

    web.xml头换成<?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">