第一篇参考
折腾了半天,终于知道了原因,在搭建struts2的环境时,一般的做法是把jar包拖到WEB-INF下的lib文件中,Tomcat启动时,会到这个目录下加载jar文件,但如果你使用的是User Libraries,那么就在lib下就没有相应的jar文件了,虽然程序编译是没有问题的,但很有可能Tomcat启动时会报这个错,
原因很简单:eclipse发布项目的时候并未自动将引用的jar包copy到WEB-INF/目录下,导致编译器找不到所使用的class.
百度了半天,找到了三种解决方案,一一试过了,只有两种成功解决了问题
第一种方法(成功):
很简单,抛弃使用User Librariy,将所有jar文件放到lib文件目录下,问题解决.但这并不是我想要的.
第二种方法(失败):
配置Tomcat的时候,默认选择的是"debug"模式,即调试模式,需要设置成"run"也就是运行模式。
步骤为:Windows->preferences->My eclispe->servers->找到你使用的Tomcat->Lauch.
第三种方法(成功):
手动将User library中的jar包添加到项目发布时自动加载的目录下:
选中项目,右键选择Properties->Myeclispe->Deployment Assembly->new:
选中你之前建好的User library,点击finish:
重新部署项目,启动Tomcat,问题解决!~~~~~
第二篇参考
解决方法:
很明显的错误:java.lang.ClassNotFoundException: FilterDispatcher
找不到FilterDispatcher这个类(FilterDispatcher分发器,是Struts2框架的核心Dispatcher,没有它,也就谈不起Struts2框架)
首先:看看有没有导入Struts2相应的jar包,是否齐全。最少要导入五个基本包:
commons-logging-api-1.1.jar
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.12.jar
xwork-2.0.6.jar
如果该包含的jar包都引入了,再看,配置文件web.xml是否配置正确,
struts2使用的是Filter充当Control? 需要配置web.xml如下:注意类名和包名不要写错
<filter>
????? <filter-name>struts2</filter-name>
????? <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
????? <filter-name>struts2</filter-name>
????? <url-pattern>*.do</url-pattern>
???? <!--? 这里的url-pattern视你的具体情况而定-->
</filter-mapping>
<filter-mapping>
????? <filter-name>struts2</filter-name>
????? <url-pattern>/struts/*</url-pattern>
</filter-mapping>
如果以上两步都没有问题,那估计就是环境问题了,在开发中,环境问题是麻烦的事,检查你用的部署服务器(Tomcat或weblogic等)、IDE的版本(eclipse或者myEclipse),以及Struts2的版本...
struts2项目中web.xml配置2.1与2.0的区别
具体的过滤器类变了,2.0配置是以上写法
2.1以后是这样配置
<filter>
?? <filter-name>struts2</filter-name>
?? <filter-class>
?????? org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter
??? </filter-class>
</filter>
<filter-mapping>
?? <filter-name>struts2</filter-name>
?? <url-pattern>/*</url-pattern>
? </filter-mapping>
另外,也与你导入jar包的位置有关,建议最好放入工程WEB-INF下的lib目录里,有时不能识别。