你的位置:首页 > Java教程

[Java教程]Struts2环境下Tomcat启动异常:Exception starting filter struts2,报了一个java.lang.ClassNotFoundException


在写一个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,问题解决!~~~~~