IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

[Struts 1.3.8] Erreur java.lang.ClassNotFoundException


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Par défaut [Struts 1.3.8] Erreur java.lang.ClassNotFoundException
    Bonjour,

    Je suis en train de faire un simple TP, je ne trouve pas la source d'une exception... J'ai beau regarder sur le site d'Apache et sur le Net, rien n'y fait...

    Commençons par la présentation du projet :

    Une JSP contient un simple formulaire : /pages/index.jsp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
     
    <html:html>
    <head>
    	<title>Une application Struts</title>
    </head>
    <body>
    	<html:form action="/accueil" method="post">
    		<table>
    			<tr>
    				<td>
    					Ville
    				</td>
    				<td>
    					<html:text property="ville"/>
    				</td>
    			</tr>
    			<tr>
    				<td>
    					Code Postal
    				</td>
    				<td>
    					<html:text property="codePostal"/>
    				</td>
    			</tr>
    			<tr>
    				<td colspan="2">
    					<html:submit value="Enregistrer"/>
    				</td>
    			</tr>
    		</table>
    	</html:form>
    </body>
    </html:html>
    Cette JSP s'appuie sur un bean tout à fait classique : /WEB-INF/src/beans/Adresse.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    package beans;
     
    import org.apache.struts.action.ActionForm;
     
    public class Adresse extends ActionForm {
     
    	private static final long serialVersionUID = 1L;
    	public String Ville;
    	public String CodePostal;
     
    	public String getCodePostal() {
    		return CodePostal;
    	}
    	public void setCodePostal(String codePostal) {
    		CodePostal = codePostal;
    	}
    	public String getVille() {
    		return Ville;
    	}
    	public void setVille(String ville) {
    		Ville = ville;
    	}
     
    }
    Suit la classe servlet : /WEB-INF/src/java/Adresse.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    package java;
     
    import java.io.IOException;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
    import beans.Adresse;
     
    public class Controle extends Action {
     
    	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
    		throws IOException, ServletException {
     
    		//récupération du formulaire
    		Adresse uneAdresse = new Adresse(); 
    		uneAdresse = (Adresse) form;
     
    		if (uneAdresse.getVille() != null && ! uneAdresse.getVille().equals("")) {
    			System.out.println("La ville : " + uneAdresse.getVille());
    		}
     
     
    		return mapping.findForward("succes");
    	}
     
    }
    Le struts-config.xml pour terminer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
     
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
              "http://struts.apache.org/dtds/struts-config_1_3.dtd">
     
    <struts-config>
     
     
    <!-- ================================================ Form Bean Definitions -->
     
        <form-beans>
        	<form-bean name="AdresseBean" type="beans.Adresse"/>
        </form-beans>
     
     
    <!-- =========================================== Global Forward Definitions -->
     
        <global-forwards>
            <forward name="welcome" path="/Welcome.do"/>
            <forward name="succes" path="/pages/succes.jsp"/>
        </global-forwards>
     
     
    <!-- =========================================== Action Mapping Definitions -->
     
        <action-mappings>
            <action path="/accueil" name="AdresseBean" type="java.Controle" />
     
     
        </action-mappings>
     
     
    <!-- ======================================== Message Resources Definitions -->
     
        <message-resources parameter="java.MessageResources" />
     
    </struts-config>
    Je lance Tomcat, appelle l'appli web, le formulaire s'affiche très bien. Je rentre une simple donnée, et boum ! Je me prends une Erreur 500 :

    exception

    javax.servlet.ServletException: java.Controle
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

    cause mère

    java.lang.ClassNotFoundException: java.Controle
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1363)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1209)
    org.apache.struts.chain.commands.util.ClassUtils.getApplicationClass(ClassUtils.java:54)
    org.apache.struts.chain.commands.util.ClassUtils.getApplicationInstance(ClassUtils.java:71)
    org.apache.struts.chain.commands.servlet.CreateAction.createAction(CreateAction.java:98)
    org.apache.struts.chain.commands.servlet.CreateAction.getAction(CreateAction.java:68)
    org.apache.struts.chain.commands.AbstractCreateAction.execute(AbstractCreateAction.java:90)
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    Là, je ne vois pas mon erreur , je me demande s'il ne manque pas un jar quelque part...

    Quelqu'un aurait-il une idée ?

    Merci par avance

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    t'as bien un WEB-INF/classes/java/Controle.class dans ta webapp? (attention à la casse si t'es sous windows)

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    t'as bien un WEB-INF/classes/java/Controle.class dans ta webapp? (attention à la casse si t'es sous windows)
    Oui, les classes compilées sont bien présentes dans le fichier WAR exporté sur Tomcat.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu n'aurais pas une autre exception en amont? Lors de l'initialisation statique de la classe.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    tu n'aurais pas une autre exception en amont? Lors de l'initialisation statique de la classe.
    Merci pour ta réponse, mais je ne comprends pas la question...

    A tout hasard, voici le log complet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    9 mai 2009 23:04:20 org.apache.catalina.core.ApplicationContext log
    INFO: HTMLManager: init: Associated with Deployer 'Catalina:type=Deployer,host=localhost'
    9 mai 2009 23:04:20 org.apache.catalina.core.ApplicationContext log
    INFO: HTMLManager: init: Global resources are available
    9 mai 2009 23:04:20 org.apache.catalina.core.ApplicationContext log
    INFO: HTMLManager: list: Listing contexts for virtual host 'localhost'
    9 mai 2009 23:04:28 org.apache.struts.chain.ComposableRequestProcessor init
    INFO: Initializing composable request processor for module prefix ''
    9 mai 2009 23:04:28 org.apache.struts.chain.commands.servlet.CreateAction createAction
    INFO: Initialize action of type: java.Controle
    9 mai 2009 23:04:28 org.apache.struts.chain.commands.AbstractExceptionHandler execute
    ATTENTION: Unhandled exception
    java.lang.ClassNotFoundException: java.Controle
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1363)
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1209)
    	at org.apache.struts.chain.commands.util.ClassUtils.getApplicationClass(ClassUtils.java:54)
    	at org.apache.struts.chain.commands.util.ClassUtils.getApplicationInstance(ClassUtils.java:71)
    	at org.apache.struts.chain.commands.servlet.CreateAction.createAction(CreateAction.java:98)
    	at org.apache.struts.chain.commands.servlet.CreateAction.getAction(CreateAction.java:68)
    	at org.apache.struts.chain.commands.AbstractCreateAction.execute(AbstractCreateAction.java:90)
    	at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    	at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    	at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    	at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    	at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    	at java.lang.Thread.run(Thread.java:619)
    9 mai 2009 23:04:28 org.apache.struts.chain.commands.ExceptionCatcher postprocess
    ATTENTION: Exception from exceptionCommand 'servlet-exception'
    java.lang.ClassNotFoundException: java.Controle
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1363)
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1209)
    	at org.apache.struts.chain.commands.util.ClassUtils.getApplicationClass(ClassUtils.java:54)
    	at org.apache.struts.chain.commands.util.ClassUtils.getApplicationInstance(ClassUtils.java:71)
    	at org.apache.struts.chain.commands.servlet.CreateAction.createAction(CreateAction.java:98)
    	at org.apache.struts.chain.commands.servlet.CreateAction.getAction(CreateAction.java:68)
    	at org.apache.struts.chain.commands.AbstractCreateAction.execute(AbstractCreateAction.java:90)
    	at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    	at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    	at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    	at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    	at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    	at java.lang.Thread.run(Thread.java:619)
    9 mai 2009 23:04:28 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet action a généré une exception
    java.lang.ClassNotFoundException: java.Controle
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1363)
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1209)
    	at org.apache.struts.chain.commands.util.ClassUtils.getApplicationClass(ClassUtils.java:54)
    	at org.apache.struts.chain.commands.util.ClassUtils.getApplicationInstance(ClassUtils.java:71)
    	at org.apache.struts.chain.commands.servlet.CreateAction.createAction(CreateAction.java:98)
    	at org.apache.struts.chain.commands.servlet.CreateAction.getAction(CreateAction.java:68)
    	at org.apache.struts.chain.commands.AbstractCreateAction.execute(AbstractCreateAction.java:90)
    	at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    	at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    	at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    	at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    	at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    	at java.lang.Thread.run(Thread.java:619)

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ben vu les logs, ta classe n'est pas présente dans WEB-INF/classes.

    Tu peux nous montrer toute l'architecture de fichiers que tu as dans le WEB-INF/classes de ta webapp déployée?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/11/2012, 17h13
  2. Réponses: 2
    Dernier message: 27/02/2012, 18h16
  3. Réponses: 1
    Dernier message: 06/02/2012, 10h15
  4. [Debutant] erreur Java.lang.ClassNotFoundException
    Par chlebta*tsotsi dans le forum JDBC
    Réponses: 3
    Dernier message: 20/05/2011, 07h26
  5. Réponses: 1
    Dernier message: 04/07/2008, 19h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo