核心过滤器配置
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
报错信息如下:
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.filter.StrutsPrepareFilter
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1139)
寻找原因
注释掉核心过滤器的代码,web项目能正常发布找到主页,取消注释就找不到主页,因此确定是核心过滤器这边的问题,报错信息也是找不到对应的包
报错信息提示找不到对应的类,网上的博客说需要将jar包手动导入,基本上都是将Struts2的包放到了WebInfo下的lib下
我去检查了一下maven管理的仓库中是否需要的类遗失,解压对应的包,能找到对应的类,说明包和类路径都没有写错
同时:对比官方文档给出的配置方式,说明配置信息是无误的
http://struts.apache.org/core-developers/web-xml.html
由于我是使用maven控制的,要把各个jar包一一拷贝到lib文件夹下,感觉很麻烦
有的博客说原因是:IDEA会把src目录下的所有非*.java文件复制到WEB-INF/classes目录下,所以Tomcat说找不到所需要的类。
解决方案
File ->Project Structure ->Artifacts ->
右键-> put into WEB-INF/lib