在写一个struts2+hibernate整合的小例子时,启动Tomcat服务器,报了一个:java
严重: Exception starting filter struts2
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterapache
折腾了半天,终于知道了缘由,在搭建struts2的环境时,通常的作法是把jar包拖到WEB-INF下的lib文件中,Tomcat启动时,会到这个目录下加载jar文件,但若是你使用的是User Libraries,那么就在lib下就没有相应的jar文件了,虽然程序编译是没有问题的,但颇有可能Tomcat启动时会报这个错,服务器
缘由很简单:eclipse发布项目的时候并未自动将引用的jar包copy到WEB-INF/目录下,致使编译器找不到所使用的class.eclipse
百度了半天,找到了三种解决方案,一一试过了,只有两种成功解决了问题spa
第一种方法(成功):hibernate
很简单,抛弃使用User Librariy,将全部jar文件放到lib文件目录下,问题解决.但这并非我想要的.debug
第二种方法(失败):调试
配置Tomcat的时候,默认选择的是"debug"模式,即调试模式,须要设置成"run"也就是运行模式。server
步骤为:Windows->preferences->My eclispe->servers->找到你使用的Tomcat->Lauch.blog
第三种方法(成功):
手动将User library中的jar包添加到项目发布时自动加载的目录下:
选中项目,右键选择Properties->Myeclispe->Deployment Assembly->new:
选中你以前建好的User library,点击finish:
从新部署项目,启动Tomcat,问题解决!~~~~~