Partage
  • Partager sur Facebook
  • Partager sur Twitter

Java EE, ClassNotFoundException

Problème lors de I'instantiation de la Servlet

    6 octobre 2013 à 14:29:56

    Bonjour,

    Je suis actuellement le tutoriel sur Java EE écrit par Coyote. Je bloque actuellement sur la fameuse erreur "HTTP 500 - Erreur à l'instantiation de la classe servlet com.coli.servlets.StriPeServlet". Vous aurez deviné le nom de ma servlet. Dans les logs j'ai ceci:

    SEVERE: Exception lors de l'allocation pour la servlet StriPeServlet

    java.lang.ClassNotFoundException: com.coli.servlets.StriPeServlet

    (...)

    J'ai déjà eu ce problème et la solution était de re-builder le projet. Seulement cette fois cette solution ne marche plus. J'ai cherché durant quelques heures et je n'ai que des indices:

    - les classes sont bien compilée, j'ai vérifié dans ...\WebContent\WEB-INF\classes.

    - après avoir modifié une classe, elle se recompile automatiquement, mais le serveur (Tomcat 7) ne redémarre plus automatiquement. La config du serveur n'a pas changé. Ca signifie qu'il ne 'voit' pas qu'une ressource a été modifiée, sinon il aurait redémarré automatiquement.

    - la seule chose qui a changé entre le moment où ça fonctionnait et maintenant est que j'ai fait tourner Ccleaner. Je le soupçonne donc d'avoir supprimé un fichier qui était utile à Eclipse/Tomcat. Mais ce n'est qu'une supposition.

    - j'ai essayé de créer un nouveau workspace dans lequel j'ai cloné mon projet, j'obtiens la même erreur.

    Merci d'avance pour votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      7 octobre 2013 à 9:30:46

      Salut,

      Vas dans le volet "Servers" d'Eclipse, puis double-clique sur Tomcat. Dans la fenêtre de configuration qui s'affiche, vérifie ce qui est coché dans les parties "Servers options" et "Publishing" :

      Pense également à faire des cleans fréquents de ton serveur Tomcat (clic-droit sur Tomcat depuis le volet "Servers", puis "Clean...").

      -
      Edité par Coyote 7 octobre 2013 à 9:32:36

      • Partager sur Facebook
      • Partager sur Twitter
        7 octobre 2013 à 17:59:47

        J'ai juste checké le "Serve modules without publishing", le reste était identique. J'ai fait un clean + restart.

        Hélas le problème reste le même, mêmes symptômes.

        Pour info, dans server.xml

        <Context docBase="StriPe" path="/Stripe" reloadable="true" source="org.eclipse.jst.jee.server:StriPe"/>

        Et dans mon web.xml

          <servlet>
            <servlet-name>StriPeServlet</servlet-name>
            <servlet-class>com.coli.servlets.StriPeServlet</servlet-class>
        </servlet>
        
        <servlet-mapping>
            <servlet-name>StriPeServlet</servlet-name>
            <url-pattern>/home</url-pattern>
        </servlet-mapping>

        Url: http://localhost:8080/Stripe/home




        • Partager sur Facebook
        • Partager sur Twitter
          7 octobre 2013 à 21:20:17

          Tomcat 7.0.37

          Windows 7 SP1

          Eclipse Juno

          Le module 'Stripe' est bien présent dans la liste des modules. 

          Voici le structure du projet, si jamais ça peut aider:

          Capture

          • Partager sur Facebook
          • Partager sur Twitter
            8 octobre 2013 à 20:37:36

            Trouvé ! :magicien:

            Le web.xml indique que la servlet se trouve dans com.coli.servlets.StriPeServlet alors que, depuis la création du folder 'web', elle se trouve dans com.coli.web.servlets.StriPeServlet, comme indiqué dans le panneau latéral de l'image ci-dessus.

            -> Erreur de débutant. Changer une servlet de place a + d'impacts que changer une autre classe de place. Je le saurai à l'avenir.

            Merci pour le coup de main en tout cas.

            • Partager sur Facebook
            • Partager sur Twitter
              17 janvier 2014 à 20:58:47

              Avant de partir en vacance je venais de terminer le chapitre 3 (fil rouge) de la partie 7, et tout fonctionnait très bien.

              Je suis rentré de vacances et je voudrais continuer le tuto (chapitre 4 : les sessions), mais oh bizarrerie, j'ai maintenant cette erreur : 500 Erreur à l'instantiation de la classe servlet com.servlets.CreaClient (Cause mère java.lang.ClassNotFoundException: com.servlets.CreaClient)

              Bizarre car qd j'ai éteint l'ordi il y a 3 semaines tout fonctionnait, et maintenant cette erreur.

              Après avoir cherché sur le web il semblerai que tout comme pour Coli, le problème vienned'une erreur avec mon fichier web.xml. J'ai beau le scruter, refaire tout le chemin, je n'arrive pas à régler le problème.

              web.xml

              Est ce que quelqu'un aurait une suggestion ?

              • Partager sur Facebook
              • Partager sur Twitter
                17 janvier 2014 à 21:55:22

                Fais un clean du serveur depuis l'onglet servers d'Eclipse, et redéploie ton projet pour voir.

                • Partager sur Facebook
                • Partager sur Twitter
                  20 janvier 2014 à 15:01:15

                  Ça a fonctionné merci!

                  Par souci d'apprentissage, qu'est ce que le clean a changé ? Je veux dire que lorsque je suivais le tuto j'ai créé plusieurs projets, démarré/arrêté souvent le serveur, modifié les ressources (les projets) associées au serveur, fait des "clean" du serveur parfois (sans savoir pourquoi) ,etc

                  Qu'est ce qui a mal fonctionné au niveau du serveur entre le moment ou j'ai éteins éclipse puis l'ai redémarré 3 semaines plus tard ? Pourquoi le clean a réglé le problème ? Est ce que c'est important de savoir ça, ou est ce qu'il suffit de considérer le serveur comme une petite bébête compliquée qu'il faut chouchouter pour qu'elle fonctionne bien, et pas trop poser de question quand ça n'est pas le cas ?

                  (ps : ces questions devraient peut être être posée dans un autre fil de discussion)

                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 janvier 2014 à 15:55:00

                    Probablement qu'une vielle version compilée d'une de tes servlets ou JSP avait esquivé un nettoyage/redéploiement auto lors d'une fermeture ou réouverture, et ça a pu causer ce problème.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 juillet 2015 à 12:11:47

                      Bonjour, je détèrre ce sujet pour signaler qu'en suivant pas à pas le tutoriel, j'ai l'erreur de class not found, avec comme affichage, en allant sur la page : "Etat HTTP 500 - Erreur à l'instantiation de la classe servlet"

                      Voici mon code :

                      package com.sdz.servlets; 
                      import javax.servlet.http.HttpServlet;

                      public class Test extends HttpServlet { 
                      }

                      Eclipse me signale une erreur au niveau de test : Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor
                       

                      et ma servlet

                      <?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"
                      	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
                      	id="WebApp_ID" version="3.0">
                      
                      	<servlet>
                      		<servlet-name>Test</servlet-name>
                      		<servlet-class>com.sdz.servlets.Test</servlet-class>
                      	</servlet>
                      
                      	<servlet-mapping>
                      		<servlet-name>Test</servlet-name>
                      		<url-pattern>/toto</url-pattern>
                      	</servlet-mapping>
                      
                      </web-app>

                       
                      Merci davance pour votre aide !

                      javax.servlet.ServletException: Erreur à l'instantiation de la classe servlet com.sdz.servlets.Test
                      	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
                      	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
                      	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
                      	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
                      	org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
                      	org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
                      	org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
                      	java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
                      	java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
                      	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
                      	java.lang.Thread.run(Unknown Source)
                      
                      




                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 novembre 2015 à 3:50:20

                        Up. Même problème que toi. Besoin d'aide s'il-vous plait :)
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Java EE, ClassNotFoundException

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown