web-dev-qa-db-fra.com

exception java.lang.ClassNotFound: org.Apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter dans web.xml

Ceci est mon code web.xml, lors de l'exécution, j'obtiens une erreur comme celle-ci ..Comment résoudre ce problème?

" SEVERE: exception de démarrage du filtre Struts Java.lang.ClassNotFoundException: org.Apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter "

 <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://Java.Sun.com/xml/ns/javaee" 
    xmlns:web="http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="WebApp_ID" version="2.5">
      <display-name>HelloStruts</display-name>


      <filter>
      <filter-name>Struts</filter-name>
      <filter-class>org.Apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
      </filter>

      <filter-mapping>
      <filter-name>Struts</filter-name>
      <url-pattern>/*</url-pattern>
      </filter-mapping>

      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
6
kavie

si vous utilisez la version 2.5 de struts2, vous devez changer de org.Apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter à org.Apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

Version Notes 2.5

28
Alexandr Lihonosov

Je faisais face au même problème. Tout le monde suggérait que ma version de jar était fausse mais le problème était différent .

J'ajoutais le bocal requis dans le projet, mais cela ne fonctionnait pas.

Supprimez donc le fichier jar du projet et ajoutez ces fichiers dans le dossier Tomcat server lib et cela a fonctionné.

1

Une autre solution, si le reste des réponses ne fonctionne pas pour vous

Si vous mettez le bon chemin de paquet (sans .ng ..) et que vous obtenez toujours: 

Java.lang.ClassNotFoundException: org.Apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

J'ai eu le même problème, mais aucune de ces solutions ne fonctionne, car j'ai la même erreur en utilisant le bon chemin mais la raison était comment le chargeur de classes charge les classes

La solution consiste à définir dans le WAS "Les classes chargées en premier avec le chargeur de classes local (dernier parent)"

Pour faire ça: 

  • Cliquez sur applications d'entreprise WebSphere. 
  • Choisissez votre application d'entreprise 
  • Cliquez sur Gérer les modules. 
  • Cliquez sur votre module. 
  • "Sélectionnez les classes chargées avec le chargeur de classes local en premier (parent En dernier)" dans la liste déroulante Ordre du chargeur de classes . 
  • Cliquez sur OK 
  • Cliquez sur Enregistrer. 
  • redémarrez le serveur Websphere (ou le serveur virtuel dans mon cas). 

Si cela fonctionne pour vous, la meilleure façon de le faire est de définir un fichier deployment.xml dans le projet EAR. Par conséquent, le déploiement futur est paramétré de manière automatisée:

<?xml version="1.0" encoding="UTF-8"?> 
<appdeployment:Deployment 
        xmi:version="2.0" 
        xmlns:xmi="http://www.omg.org/XMI" 
        xmlns:appdeployment=" 
http://www.ibm.com/websphere/appserver/schemas/5.0/appdeployment.xmi"> 

        <deployedObject xmi:type="appdeployment:ApplicationDeployment" 
startingWeight="10"> 

                <modules 
                        xmi:type="appdeployment:WebModuleDeployment" 
                        startingWeight="10000" 
                        uri="<your war name>" 
                        classloaderMode="PARENT_LAST" /> 
                <classloader mode="PARENT_LAST" /> 
        </deployedObject> 
</appdeployment:Deployment>

J'ai trouvé la solution ici:Solution - Configuration du chargeur de classe dans WAS

0
Kail Alexander

Assurez-vous que votre bibliothèque struts2 est incluse dans votre projet de déploiement. Ajoutez votre bibliothèque struts2 dans le fichier WEB-INF. Ajoutez ensuite cela à votre chemin de construction.

0
richard gong

Depuis Struts 2.5, StrutsPrepareAndExecuteFilter a été déplacé vers le package org.Apache.struts2.dispatcher.filter (sans le "ng" dans le package).

0
Joe Aldrich

Cela se produira car la version correcte du struts2-core.jar ne se trouve pas sur le chemin de la bibliothèque. Veuillez vérifier votre répertoire lib et vous assurer que vous avez la bonne version de struts2-core.jar

Si vous avez le fichier jar dans votre dossier lib , vous devez vous assurer que vous incluez la bibliothèque de projet appropriée lorsque vous déployez votre code dans votre conteneur d'applications. Si les fichiers de la bibliothèque de projets Struts 2 ne sont pas inclus lors du déploiement, cette erreur se produira également. 

0
meoww-