web-dev-qa-db-fra.com

SEVERE: exception au démarrage du filtre struts2 Java.lang.ClassNotFoundException: org.Apache.struts2.dispatcher.FilterDispatcher

J'essaie de créer une petite application de connexion dans struts 2. Mon web.xml:

<?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>StrutsPrj</display-name>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.Apache.struts2.dispatcher.FilterDispatcher
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <welcome-file-list>
        <welcome-file>Login.jsp</welcome-file>
    </welcome-file-list>
    </web-app>

Struts.xml:

<struts>
    <package name="default" extends="struts-default" namespace="/">
        <action name="login" method="execute"
            class="struts2.LoginAction">
            <result name="success">Welcome.jsp</result>
            <result name="error">Login.jsp</result>
        </action>
    </package>
</struts>    

login.jsp:

<%@ page language="Java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login Screen - Struts 2</title>
</head>
<body>

<s:actionerror />
    <s:form action="login.action" method="post">
        <s:textfield name="username" value="UserName" size="20" />
        <s:password name="password" value="Password" size="20" />
        <s:submit method="execute" value="Login" align="center" />
    </s:form>
</body>
</html>

Welcome.jsp:

<%@ page language="Java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Welcome Screen - Struts 2</title>
</head>
<body>
<h2>Congrates, <s:property value="username" />...!</h2>
</body>
</html>

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;
    }
}

Et j'ai ajouté ces bibliothèques à mon projet:

  • commons-logging-1.0.4.jar
  • struts2-core-2.1.8.1.jar
  • ognl-2.6.11.jar
  • xwork-2.1.0.jar
  • freemarker-2.3.9.jar

Lorsque j'essaie d'exécuter ceci sur Tomcat 6, j'ai l'erreur suivante:

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.<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(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
11
Sanju

Assurez-vous que les éléments suivants figurent sur votre chemin de classe: 

  • commons-fileupload-X.X.X.jar
  • commons-io-X.X.X.jar
  • commons-logging-X.X.X.jar
  • commons-logging-api.X.X.jar
  • freemarker-X.X.X.jar
  • ognl-X.X.X.jar
  • struts2-core-X.X.X.X.jar
  • xwork-core-X.X.X.jar
  • javassist-3.7.ga.jar (nouveauté de Struts versions 2.2.1 et supérieures)
  • commons-lang3-x.x

Edit: Avez-vous suivi http://struts.Apache.org/release/2.3.x/docs/how-to-create-a-struts-2-web-application.html pour configurer votre projet? Pourquoi utilisez-vous struts 2.1.X.X et non 2.2.x.x? 

Essayer:

        <filter>
            <filter-name>action</filter-name>
            <filter-class>org.Apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>action</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
20
Quaternion

Vous devez ajouter un autre pot commons-lang3-x.x

faites défiler l'écran jusqu'à la fin des journaux 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
13
Haleem

J'ai eu le même problème. Je l'ai résolu de cette façon: 1er j'ai supprimé tous mes libs ajoutés. Puis je les ai ajoutés via Project->Properties->Deployment Assembly. Avant, je les copiais dans le dossier WEB-INF/lib. Cela ne semble pas fonctionner tout le temps ... espérons que cela vous aidera.

4

ajoutez simplement commons-lang3XXXX.jar à votre bibliothèque.

1
rashmitneo20

J'ai aussi cette erreur et j'ai vérifié ma dtd dans web.xml et j'ai changé la version de 2.4 à 2.5.

    <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">
1
archana

ajoutez le fichier commons-lang3-jar dans le dossier WEB-INF\lib.

1
sareeshmnair

Il semble que le fichier commons-lang3-XXX.jar soit absent de votre chemin de classe. Vous pouvez le résoudre en ajoutant le fichier jar à votre dossier lib.

0
Md Azaharuddin Ali

Vous avez un problème similaire lors du démarrage du projet strut2.

J'utilisais les derniers pots. Web.xml a la version 3.0. Et il ne contient pas le répartiteur approprié dans sa configuration. J'ai ajouté le filtre de répartition correct, c'est-à-dire 

org.Apache.struts2.dispatcher.FilterDispatcher 

au lieu de 

org.Apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter 

ou 

org.Apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter. 

cela a beaucoup fonctionné.

0
Deepak Gupta

Un paramètre constant struts.action.excludePattern m'a causé le même problème maintenant. Je n'ai pas eu d'explication, pas même une trace de pile que vous, seulement un pur "error FilterStart". J'ai suivi cela en revenant aux versions précédentes du code et vérifié, ce qui a changé.

0
peterh

En ce qui concerne l'erreur:

SEVERE: Exception starting filter struts2 Java.lang.ClassNotFoundException: org.Apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

PROBLÈME:

La combinaison suivante semble poser un problème Eclipse - WTPPlugin - Struts2 - Maven3

RÉSULTATS:

Nous supposons que lorsque nous exécutons un projet en tant que "Exécuter sur le serveur", nous supposons qu'Eclipse exécute maven, un fichier WAR créé et se déploie sur le serveur. Mais cela ne fonctionne pas parfaitement pour moi. Je vois le fichier WAR dans le dossier cible où maven crée WAR et celui-ci est parfait. Mais Eclipse semble faire autre chose.

SOLUTION:

Placez tous les fichiers JAR requis dans le fichier WEB-INF/lib ..__ du projet Eclipse. Si vous utilisez le contrôle de version, veillez à ignorer le dossier lib . Comment trouver tous les JAR requis lorsque vous utilisez maven? Accédez au dossier cible et au fichier WAR. Éclatez-le et accédez à WEB-INF/lib. Copiez tous ces fichiers JARS dans le fichier WEB-INF/lib du projet Eclipse.

0
Harshvardhan Singh

Je suggère de faire une construction Maven, les dépendances seront résolues par Maven. C'est ce que je devais mettre dans pom.xml

     <dependency>
        <groupId>org.Apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.3.1.2</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
0
Vijay Kumar

Si vous utilisez la version 2.5 de Struts2, vous devez remplacer org.Apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter par org.Apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter. Voir:

Exception Java.lang.ClassNotFound: org.Apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter dans web.xml

0
yasin