Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Résolu] [J2EE] Etat HTTP 500

Erreur à l'instantiation de la classe servlet

Sujet résolu
14 septembre 2016 à 22:38:03

Bonjour ou bonsoir lorsque vous lirez ce message.

Je suis actuellement le tuto de Coyote : Créer votre application Web avec Java EE, histoire de :

1 - remettre la main dans Java

2 - me former sur JEE, histoire de faire un mahjong riichi (mahjong japonais à 4 joueurs qui peut ressembler au Rami) multijoueur

3 - se former sur la base JEE avant d'attaquer des frameworks spécifiques (Spring, Struts, Hibernate etc)

Actuellement, j'en suis au tout début des Servlets.

Ma config :

- Windows 7 Professional

- Eclipse Mars

- Tomcat v8.0.32

- Java 8 (pour, au cas où j'en aurai besoin, le lambda calcul)

Donc, si j'écris ici, c'est que j'ai un problème. Et, c'est cette foutue erreur 500, soit : "Erreur à l'instantiation de la classe Servlet".

Attention : je dis "foutue erreur" car j'ai l'impression que c'est une des erreurs des plus fréquentes de JEE et qu'elle est souvent présente pour différentes raisons.

Je préviens aussi tout de suite : les constants rafraîchissements et nettoyage ne font absolument rien du tout. Modifier dans les propriétés du projet n'a rien fait de plus. C'est pour ça que je me tourne vers vous.

Actuellement, j'ai, dans mon fichier web.xml :

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xmlns="http://xmlns.jcp.org/xml/ns/javaee"
		 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
		 id="WebApp_ID"
		 version="3.1">
  <display-name>Test_JEE-OpenClassroom_Appli_Web</display-name>

  <servlet>
	<servlet-name>test_servlets</servlet-name>
	<servlet-class>test_servlets.TestS</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>test_servlets</servlet-name>
    <url-pattern>/titi</url-pattern>
  </servlet-mapping>
  
</web-app>


Avec, en plus, une capture d'écran sur l'organisation du projet.

PS : ignorez TestServlet.java dans le Package test_servlets. Depuis un rafraîchissement, j'ai une page blanche, même quand il y a une erreur ou un simple "Helloworld"

Le code de TestS.java, histoire d'avoir l'erreur 405 :

package test_servlets;

import javax.servlet.http.HttpServlet;

public class TestS extends HttpServlet {

}


Et voici les messages d'erreurs que j'obtiens :

A l'écran de ma page web

Etat HTTP 500 - Erreur à l'instantiation de la classe servlet test_servlets.TestS

type Rapport d''exception

message Erreur à l'instantiation de la classe servlet test_servlets.TestS

description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête.

exception

javax.servlet.ServletException: Erreur à l'instantiation de la classe servlet test_servlets.TestS
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
	org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100)
	org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687)
	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
	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)

cause mère

java.lang.ClassNotFoundException: test_servlets.TestS
	org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
	org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
	org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100)
	org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687)
	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
	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)

note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/8.0.37.

Ah oui, impossible de trouver le fichier Appache sur Tomcat.

Sur la console d'Eclipse :

sept. 14, 2016 10:14:30 PM org.apache.catalina.core.ApplicationContext log
INFOS: La servlet test_servlets est marqué comme indisponible
sept. 14, 2016 10:14:30 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Exception lors de l'allocation pour la servlet test_servlets
java.lang.ClassNotFoundException: test_servlets.TestS
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
	at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:518)
	at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:499)
	at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1091)
	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:817)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)

Je vous remercie d'avance de l'aide que vous apporterez.

Edition : J'ai pu résoudre le problème. Etant donné qu'il y a des manières différentes dans le net pour traîter cette erreur, peut-être que ma solution pourrait vous aider.

- Nettoyer le serveur TomCat, que ce soit le Module Work, le Work Directory et le Clean

- Nettoyer le projet Eclipse (voire du workspace). pour ça : Project (de la barre de menu) ->Clean

- Faire un refresh de votre projet JEE, puis un build, un autre refresh et tester.

- Dans le cas où ça ne marche pas, vérifiez le compilateur (Clic droit sur le projet, Preferencies, Java Build Path). Parfois, Eclipse ne met pas dans order&export le fichier src qui contient le code java.

- Enfin, dans web.xml (si vous n'utilisez pas la notation 3.0 sous forme de @WebServlet("/MaServlet") de la classe héritant de HttpServlet), vérifiez bien le chemin de <servlet-class>chemin_de_la_servlet.[...].NomClasse</servlet-classe>

-
Edité par RutsukuFushin 15 septembre 2016 à 15:07:21

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
16 septembre 2016 à 1:38:07

Salut,

Il existe un bouton au-dessus de ton premier post pour tagger ton sujet en résolu. (ça sera d'ailleurs bien plus visible que le tag écrit à la main)

Merci d'avance. :)

  • Partager sur Facebook
  • Partager sur Twitter
30 avril 2023 à 18:59:09

description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.


  • Partager sur Facebook
  • Partager sur Twitter
30 avril 2023 à 19:25:37

@AsmaS'Hell Bonsoir, merci de ne pas squatter le sujet résolu des autres, créer votre propre sujet dans le respect des règles du forum à savoir qu'un message commence par des règles de politesses (Un bonjour ou des salutations à la communauté et se termine par des remerciements par avances pour les futures réponses), la description de votre problème et le code que vous avez écrit inséré sur le forum à l'aide de l'outil d'intégration de code soit le bouton code </>.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter