Exception starting struts filter2 – ha provato ad aggiungere JAR, ma lo stesso risultato

Ecco l’errore che sto ottenendo:

SEVERE: Exception starting filter struts2 java.lang.NoClassDefFoundError: com/opensymphony/xwork2/config/FileManagerProvider at org.apache.struts2.dispatcher.Dispatcher.init_FileManager(Dispatcher.java:336) at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:465) at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:193) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295) at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:424) at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:115) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4072) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4726) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675) at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065) at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 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) Caused by: java.lang.ClassNotFoundException: com.opensymphony.xwork2.config.FileManagerProvider at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) ... 30 more 

Elenco di JAR:

 antlr-2.7.6.jar commons-beanutils-1.8.3.jar commons-collections-3.2.1.jar commons-digester-2.1.jar commons-fileupload-1.3.jar commons-logging-1.1.1.jar dom4j-1.6.1.jar ejb3-persistence-1.0.2.GA.jar freemarker-2.3.16.jar hibernate-annotations-3.2.1.ga.jar hibernate-commons-annotations-3.3.0.ga.jar hibernate-core-4.2.1.Final.jar hsqldb-2.0.0.jar javassist-3.12.1.GA.jar jta-1.1.jar log4j-1.2.15.jar mysql-connector-java-5.1.21.jar ognl-2.7.3.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.7.5.jar struts2-core-2.3.14.3.jar xwork-2.1.3.jar 

E il mio web.xml è così:

  struts2 org.apache.struts2.dispatcher.FilterDispatcher   struts2 /*  

Ho provato molte cose dopo aver letto su questo forum:

  1. Ho provato diverse versioni di JAR.
  2. Distribuito manualmente WAR in Tomcat.
  3. Collocato il JAR del servlet-API anche nella cartella lib (sebbene sia presente nella lib del server).
  4. Leggi i log di Tomcat, non ha trovato nulla di diverso. (Per favore fatemi sapere, posso incollare anche quelli)

Ma nessuno di loro ha aiutato. Quindi, l’ultima risorsa, la sto postando qui.

Dal momento che stai usando Struts 2.3,

FilterDispatcher è deprecato . DEVI usare StrutsPrepareAndExecuteFilter (o i suoi fratellini).

Dalla documentazione ufficiale

Deprecato Dal momento che Struts 2.1.3 utilizza StrutsPrepareAndExecuteFilter o StrutsPrepareFilter e StrutsExecuteFilter se è necessario utilizzare il filtro ActionContextCleanUp oltre a questo

cambia poi questo

   org.apache.struts2.dispatcher.FilterDispatcher  

a questa:

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

Si noti che, da 2,5, sarebbe invece:

   org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter