在写一个struts2+hibernate整合的小例子时,启动Tomcat服务器,报了一个:
严重: Exception starting filter struts2
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
折腾了半天,终于知道了原因,在搭建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,问题解决!~~~~~