java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFil...

本文解决Struts2中StrutsPrepareAndExecuteFilter出现的ClassNotFoundException问题,适用于2.1.3及后续版本。文章详细介绍了如何根据版本选择正确的过滤器类,并更新web.xml配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

严重: Exception starting filter struts2
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts2.1.3以前版本和之后版本

struts2中StrutsPrepareAndExecuteFilter 异常如果是2.1.3之前的版本用org.apache.struts2.dispatcher.FilterDispatcher,否则用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。  

因为从Struts2.1.3开始,将废弃ActionContextCleanUp过滤器,而在StrutsPrepareAndExecuteFilter过滤器中包含相应的功能。在web.xml中做修改红色字体部分    
     
   <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> 

排查后发现自己属于struts2-core-2.3.24.1且ctrl也能到对应jar包的class

http://bbs.youkuaiyun.com/topics/330179411 百度后发现

若是通过类路径添加库(如:User Library中struts2)的方式加入jar包,可能需要在该项目属性Properties->Java EE Module Dependencies中将该库(struts2)选中。

 

新版Eclipse找不到Java EE Module Dependencies选项

在 Eclipse Galileo (3.5) 版本或Ganymede (3.4) 等更老的版本中, 你可以使用Java EE Module Dependencies 选项来组织你的项目结构,确保依赖的工程能正确的发布到指定的目录中。 
这里写图片描述

但是在 Eclipse Helios (3.6)之后的版本中找不到该选项了,其实 Java EE Module Dependencies被替换为Web Deployment Assembly了而已。 
这里写图片描述

使用Web Deployment Assembly可以完成相同的功能。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值