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

Servlets/JSP Java Discussion :

Erreur à l'instantiation de la classe servlet


Sujet :

Servlets/JSP Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Erreur à l'instantiation de la classe servlet
    Bonjour,

    Je voudrais créer une application web où on peut ajouter et supprimer des produits dans un panier.

    Cependant quand j'essaye de lancer la requête post pour ajouter un produit, j'obtiens cette erreur :

    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
    message Erreur à l'instantiation de la classe servlet [panier.AjouterPanier]
    description Le serveur a rencontré une erreur interne qui l'a empêché de satisfaire la requête.
    exception
    jakarta.servlet.ServletException: Erreur à l'instantiation de la classe servlet [panier.AjouterPanier]
    	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
    	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    	org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:356)
    	org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
    	org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    	org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:866)
    	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1716)
    	org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    	org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	java.base/java.lang.Thread.run(Thread.java:831)
    cause mère
    java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
    	java.base/java.lang.ClassLoader.defineClass1(Native Method)
    	java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010)
    	java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
    	org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2522)
    	org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:872)
    	org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1408)
    	org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1252)
    	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
    	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    	org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:356)
    	org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
    	org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    	org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:866)
    	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1716)
    	org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    	org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	java.base/java.lang.Thread.run(Thread.java:831)
    Voici ma servlet qui me permet d'enregistrer les produits :

    Code Java : 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
    package panier;
     
     
    import java.io.*;
    import java.util.*;
    import javax.servlet.*;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.*;
     
     
     
     
     
     
    /**
     * Servlet implementation class AjouterPanier
     */
     
     
    @WebServlet("/ajouterProduit")
    public class AjouterPanier extends HttpServlet {
    	private static final long serialVersionUID = 1L;
     
     
        /**
         * Default constructor. 
         */
        public AjouterPanier() {
        	super();
        }
     
     
    	/**
             * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
             */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		RequestDispatcher dispatcher  = request.getRequestDispatcher("panier.jsp");
    		dispatcher.forward(request, response);
     
    	}
     
     
    	/**
             * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
             */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		String nom = request.getParameter("nom");
    		double prix = Double.parseDouble(request.getParameter("prix"));
    		String ref = request.getParameter("ref");
     
    		Produit p = new Produit();
     
    		p.setNom(nom);
    		p.setPrix(prix);
    		p.setRef(ref);
     
    		List<Produit> produits = new ArrayList<Produit>();
     
    		produits.add(p);
     
    		HttpSession session = request.getSession();
     
    		session.setAttribute("produits", produits);
     
    		RequestDispatcher dispatcher  = request.getRequestDispatcher("panier.jsp");
    		dispatcher.forward(request, response);
     
    		System.out.println(Arrays.toString(produits.toArray()));
     
     
     
     
     
    	}
     
     
    }


    Voici la page JSP qui permet de rentrer les données et réaliser la requête :
    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
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
     
     
     
     
     
    <!DOCTYPE html>
    <html>
    <head>
    	<meta name="viewport" content="width=device-width,initial-scale=1">
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" />
    	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
    	<meta charset="ISO-8859-1">
    <title>Ajouter un produit</title>
    </head>
    <body>
     
     
     
    </head>
    <body>
    	<div>
    		<h2>Ajouter un produit</h2>
     
    		<form action="<%=request.getContextPath() %>/AjouterPanier" method="post">
    			<label for="ref">Nom du produit :</label><br>
    			<input type="text" name="nom" required><br>
     
    			<label for="ref">Prix du produit :</label><br>
    			<input type="number" name="prix" required><br>
     
    			<label for="ref">Référence :</label><br>
    			<input type="text" name="ref" required><br><br>
     
    			<input type="submit" value="Ajouter le produit">
    		</form>
    	</div>
     
     
     
    </body>
    </html>

    Toutes les informations devront être ensuite affiché sur autre page JSP (c'est a dire le panier)

    Voici son code :


    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
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta name="viewport" content="width=device-width,initial-scale=1">
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" />
    	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
    	<meta charset="ISO-8859-1">
    <title>Panier</title>
    </head>
     
     
    <style>
     
     
    </style>
     
     
     
     
    <body>
     
     
     
    </head>
    <body>
    	<h3>PANIER</h3>
    	<div>
     
    		<form method="GET" action="ajouterProduit.jsp">
        		<input type="submit" value="Ajouter un produit" />
    		</form>
     
    		<br>
     
    		<div class="produit">
    			<c:forEach items="${produits}" var="produits">
    				<tr>
      					<td><c:out value="${produits.nom}" /></td>
     					<td><c:out value="${produits.prix}" /></td>
     					<td><c:out value="${produits.ref}" /></td>
    				 </tr>
    			</c:forEach>
     
    		</div>
     
    	</div>
     
     
     
    </body>
    </html>

    Au départ je pensais que mon erreur venait d'un problème au niveau du package mais quand je check mon web.xml :

    Code XML : 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
    <?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/j2ee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://java.sun.com/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee" id="WebApp_ID" version="2.4">
      <display-name>Panier</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      <servlet>
        <servlet-name>AjouterPanier</servlet-name>
        <servlet-class>panier.AjouterPanier</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>AjouterPanier</servlet-name>
        <url-pattern>/AjouterPanier</url-pattern>
      </servlet-mapping>
    </web-app>

    Je ne trouve rien de bizarre.


    Pourriez-vous s'il vous plaît m'indiquer si possible ce qu'est le problème afin que je puisse faire fonctionner la requête.

    Je vous remercie d'avance.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Vu que la cause mère est : java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet, il doit y avoir un problème de paramétrage du serveur ou de l'archive de déploiement de l'application.
    Difficile d'aider en tout cas...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Etat HTTP 500 - Erreur à l'instantiation de la classe
    Par Jwhy1 dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 08/09/2020, 21h56
  2. Etat HTTP 500 - Erreur à l'instantiation de la classe
    Par Invité dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 28/03/2016, 23h54
  3. Erreur à l'instanciation de la classe servlet
    Par amitieras dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 21/05/2014, 21h58
  4. Etat HTTP 500 - Erreur à l'instantiation de la classe servlet
    Par lionceau dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 13/03/2014, 14h32
  5. Réponses: 9
    Dernier message: 27/04/2004, 11h01

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