Eclipse配置Struts2问题:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

简介:

我的解决方案

一开始,我是依照某本教材,配置了User Libraries(名为struts-2.2.3, 可供多个项目多次使用), 然后直接把struts-2.2.3引入过来(这个包不会真正的放在项目文件夹下): 

可是一运行就出现如题所示的错误,程序无法启动,具体错误如下:

严重: Exception starting filter struts2
Java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:269)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4071)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4725)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

在Google里baidu了一下,得不到有效的解决方案。根据错误提示,意思是找不到类org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,可是我确实手动找到了这个类啊:

为了确保类的名称没有拼写错误,右击上图的StrutsPrepareAndExecuteFilter.class文件,选择"Copy Qualified Name"(复制精确名称), 粘贴到web.xml文件的相应位置,保存重运行,出现同样的错误,证明类的名称没有拼写错误。

最后我弃用了User Libraries, 手动将Struts2的相关jar复制到/webContent/WEB-INF/lib目录下:

重新运行程序,成功!

也就是说,Tomcat默认从WEB-INF/目录下加载资源,Eclipse在发布程序的时候,并没有把User Libraries的相关资源拷贝到WEB-INF/目录下(Eclipse会把src目录下的所有非*.java文件复制到WEB-INF/classes目录下),所以Tomcat说找不到所需要的类。

其他解决方案

本文的评论中:

1. whbaicxy同学给出了其他的解决方案:Eclipse下User Library的发布. 请各位同学尝试一下, 期待各位把解决的结果写在本文下面的评论中.

2. orangekent同学的解决方案:

我也遇到此情况,但解决办法非常简单。
原因是为什么tomcat没有把jar包拷贝到运行环境?因为我们在配置tomcat的时候选择了“调试模式”,即“debug”;需设置为“生产模式”,即“run”,之后重新部署即可。
模式设置位置:myeclipse--preferences--servers--tomcatxx--launch选择“run mode”。

 

注:

工具版本:

Tomcat: 6.0.32

Eclipse Java EE: 3.6.2

Struts2: 2.2.3

截图工具:QQ

图片编辑:mspaint


本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/p/6365449.html,如需转载请自行联系原作者

相关文章
|
6月前
|
Java Linux 开发工具
怎样下载安装Eclipse并配置开发环境?
Eclipse是一款非常流行的Java开发工具,它本身是开源的,适合多种多样的开发场景,深受Java开发者们的喜爱。今天我就跟大家介绍一下如何下载安装Eclipse,以及如何配置Eclipse的开发环境。
157 0
|
6月前
|
Java Maven Android开发
在Eclipse里配置Maven插件
Maven是一款比较常用的Java开发拓展包,它相当于一个全自动jar包管理器,会导入用户开发时需要使用的相应jar包。使用Maven开发Java程序,可以极大提升开发者的开发效率。下面我就跟大家介绍一下如何在Eclipse里安装和配置Maven插件。
145 0
|
24天前
|
Java Android开发 开发者
【编程进阶知识】精细调控:掌握Eclipse JVM参数配置的艺术
本文详细介绍了如何在Eclipse中配置JVM参数,包括内存的初始和最大值设置。通过具体步骤和截图演示,帮助开发者掌握JVM参数的精细调控,以适应不同的开发和测试需求。
39 1
|
6月前
|
存储 Java 开发工具
在Eclipse配置安装Android详细教程(新手)
在Eclipse配置安装Android详细教程(新手)
153 1
|
6月前
|
Java 关系型数据库 应用服务中间件
JAVA Web项目开发eclipse工具包配置(第一天)
JAVA Web项目开发eclipse工具包配置(第一天)
|
6月前
|
算法 程序员 Apache
Windows下搭建SVN服务器并配置eclipse和idea
Windows下搭建SVN服务器并配置eclipse和idea
158 1
|
6月前
|
Java 应用服务中间件 Android开发
Tomat + Java配置 + eclipse下载
Tomat + Java配置 + eclipse下载
|
11月前
|
Oracle Java 关系型数据库
JAVAweb 的Eclipse配置及需要安装的jdk及tomcat 完整详细 搭配图片,详细易懂
JAVAweb 的Eclipse配置及需要安装的jdk及tomcat 完整详细 搭配图片,详细易懂
137 0
|
11月前
|
Java Maven Android开发
在 Eclipse 中配置使用 Maven
在 Eclipse 中配置使用 Maven
159 0
|
11月前
|
Java Android开发
如何在 Eclipse 中配置本地安装的 JDK
如何在 Eclipse 中配置本地安装的 JDK
285 0