SEVERE:exception启动filterstruts2 java.lang.ClassNotFoundException:org.apache.struts2.dispatcher.FilterDispatcher

我试图在struts 2中创建一个小型登录应用程序。我的web.xml:

  StrutsPrj  struts2  org.apache.struts2.dispatcher.FilterDispatcher    struts2 /*   Login.jsp   

struts.xml中:

    Welcome.jsp Login.jsp    

login.jsp的:

       Login Screen - Struts 2           

Welcome.jsp中:

       Welcome Screen - Struts 2   

Congrates, ...!

LoginAction.java:

 package struts2; public class LoginAction { private String username; private String password; public String execute() { if (this.username.equals("admin") && this.password.equals("admin123")) { return "success"; } else { return "error"; } } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } 

我已将这些库添加到我的项目中:

  • 共享记录-1.0.4.jar
  • Struts2的核心 – 2.1.8.1.jar
  • OGNL-2.6.11.jar
  • XWork的-2.1.0.jar
  • freemarker的-2.3.9.jar

当我尝试在Tomcat 6上运行它时出现以下错误:

 Mar 10, 2011 1:17:59 PM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Java\jre6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Java/jre6/bin/client;C:/Java/jre6/bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Java\jdk1.5\bin\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Liquid Technologies\Liquid XML Studio 2009\XmlDataBinder7\Redist7\cpp\win32\bin;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\MySQL\MySQL Server 5.0\bin Mar 10, 2011 1:17:59 PM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:newPrj' did not find a matching property. Mar 10, 2011 1:17:59 PM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context/Loader} Setting property 'useSystemClassLoaderAsParent' to 'false' did not find a matching property. Mar 10, 2011 1:17:59 PM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:StrutsPrj' did not find a matching property. Mar 10, 2011 1:17:59 PM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context/Loader} Setting property 'useSystemClassLoaderAsParent' to 'false' did not find a matching property. Mar 10, 2011 1:18:00 PM org.apache.coyote.http11.Http11Protocol init INFO: Initializing Coyote HTTP/1.1 on http-8080 Mar 10, 2011 1:18:00 PM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 2037 ms Mar 10, 2011 1:18:00 PM org.apache.catalina.core.StandardService start INFO: Starting service Catalina Mar 10, 2011 1:18:00 PM org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/6.0.32 Mar 10, 2011 1:18:01 PM org.apache.catalina.core.StandardContext filterStart SEVERE: Exception starting filter struts2 java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher 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.(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(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) Mar 10, 2011 1:18:01 PM org.apache.catalina.core.StandardContext start SEVERE: Error filterStart Mar 10, 2011 1:18:01 PM org.apache.catalina.core.StandardContext start SEVERE: Context [/StrutsPrj] startup failed due to previous errors Mar 10, 2011 1:18:01 PM org.apache.coyote.http11.Http11Protocol start INFO: Starting Coyote HTTP/1.1 on http-8080 Mar 10, 2011 1:18:01 PM org.apache.jk.common.ChannelSocket init INFO: JK: ajp13 listening on /0.0.0.0:8009 Mar 10, 2011 1:18:01 PM org.apache.jk.server.JkMain start INFO: Jk running ID=0 time=0/97 config=null Mar 10, 2011 1:18:01 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 1756 ms 

确保您的类路径中包含以下内容:

  • 公地文件上传,XXXjar
  • 公地IO-XXXjar
  • 共享记录,XXXjar
  • 共享记录,api.XXjar
  • freemarker的-XXXjar
  • OGNL-XXXjar
  • Struts2的核心 – XXXXjar
  • XWork的核心,XXXjar
  • javassist-3.7.ga.jar(Struts 2.2.1及更高版本的新增function)
  • 公地lang3-XX

编辑:您是否按照http://struts.apache.org/release/2.3.x/docs/how-to-create-a-struts-2-web-application.html设置项目? 你为什么使用struts 2.1.XX而不是2.2.xx?

尝试:

   action org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter   action /*  

你需要再添加一个jar commons-lang3-xx

向下滚动到apache日志的末尾,你可以找到ClassNotFoundException: org.apache.commons.lang3.StringUtils

 Caused by: java.lang.ClassNotFoundException: **org.apache.commons.lang3.StringUtils** at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556) ... 55 more 

我有同样的问题。 我这样解决了:第一次我删除了所有添加的 。 然后我通过Project->Properties->Deployment Assembly添加它们。 之前,我只是将它们复制到WEB-INF/lib文件夹中。 这似乎并不总是有效。 希望这可以帮助。

我也得到了这个错误,我在web.xml检查了我的dtd ,并将版本从2.4更改为2.5。

   

将commons-lang3-jar文件添加到WEB-INF \ lib文件夹中。

只需将commons-lang3XXXX.jar添加到您的库中

我建议做一个Maven构建,依赖关系将由Maven解决。 这是我必须放在pom.xml中的内容

   org.apache.struts struts2-core 2.3.1.2 jar compile  

一个struts.action.excludePattern常量设置给我带来了同样的麻烦。 我没有得到任何解释,甚至没有像你一样的堆栈跟踪,只有一个纯粹的“错误FilterStart”。 我通过恢复到以前版本的代码来跟踪这个并检查,改变了什么。

看来,类路径中缺少commons-lang3-XXX.jar文件。 您可以通过将jar添加到lib文件夹来解决它。

关于错误:

 SEVERE: Exception starting filter struts2 java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 

问题:

以下组合Eclipse似乎存在问题 – WTPPlugin – Struts2 – Maven3

发现:

我们假设当我们运行一个项目为“在服务器上运行”时,我们假设eclipse运行maven,创建WAR文件并在服务器上部署。 但它不适合我。 我确实在maven创建WAR的目标文件夹中看到了WAR文件,而WAR是完美的。 但是eclipse似乎运行了别的东西。

解:

将所有必需的JAR文件放入eclipse项目的WEB-INF / lib中。 如果您使用的是版本控制,请确保忽略lib文件夹。 如何在使用maven时找到所有必需的JAR? 转到目标文件夹和WAR文件。 将其打开并转到WEB-INF / lib。 将所有这些JARS复制到eclipse项目的WEB-INF / lib。

启动strut2项目时遇到了类似的问题。

我正在使用最新的jar子。 Web.xml的版本为3.0。 并且它的配置中不包含适当的调度程序。 我添加了正确的调度程序filter,即

 org.apache.struts2.dispatcher.FilterDispatcher 

代替

 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter 

要么

 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter. 

它工作得很好。

如果您使用的是Struts2版本2.5,则需要将org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter更改为org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter 。 看到:

java.lang.ClassNotFoundException:web.xml中的org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

作为Struts2框架的新手,我最近遇到了相同(或非常相似)的错误。 就我而言,我在Action类中使用注释而不是struts.xml文件。

例如

 @Action(value="/jsp/edit-file", results={@Result(name="success",location="/jsp/edit-success.jsp"), @Result(name="failure",location="/jsp/edit-failure.jsp")}) public String execute() { ... } 

但是当我更改动作值以包含* .action扩展名(见下文)时,Struts会抛出上面提到的“SEVERE:Exception start filter struts2”错误。

 @Action(value="/jsp/edit-file.action", results={@Result(name="success",location="/jsp/edit-success.jsp"), @Result(name="failure",location="/jsp/edit-failure.jsp")}) public String execute() { ... } 

这个错误的原因并不明显,因为它没有立即显现出来。 通过Tomcat localhost..log文件,我找到了错误的堆栈跟踪,并且能够解决问题。