Bonjour,
je développe une application web en java avec tomcat comme serveur d'application. Lors de l'exécution j'ai l'erreur suivante qui s'affiche :
Tout a pourtant l'air normal car le code de la servlet est le suivant :
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 Etat HTTP 500 - -------------------------------------------------------------------------------- type Rapport d'exception message description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête. exception javax.servlet.ServletException: L'enrobeur (wrapper) ne peut trouver la classe servlet projet.classes.controleurs ou une classe dont elle dépend org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:835) org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640) org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286) java.lang.Thread.run(Unknown Source) cause mère java.lang.ClassNotFoundException: projet.classes.controleurs org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1386) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1232) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:835) org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640) org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286) 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/5.5.27. -------------------------------------------------------------------------------- Apache Tomcat/5.5.27
Celui du web.xml :
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 package projet.classes.controleurs; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; import df.java.gesconbd.DFConnexion; public class servletIndex extends HttpServlet{ private static final long serialVersionUID = 1L; private Connection conPrj=null; private DFConnexion gesConPrj = new DFConnexion(); private String FichierConfig="config.cnx"; /*** Test de l'existence du fichier de configuration ***/ public boolean FichierExiste(){ File fichier = new File(FichierConfig); return fichier.exists(); } //Procédure INIT public void init() { } //Procédure DOGET public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String msg=""; boolean succesCon=false; if(!FichierExiste()){ msg="Impossible d'établir une connexion avec le serveur, car le fichier de configuration n'existe pas. Veuillez renseigner de nouveaux paramètres de connexion au serveur."; getServletContext().getRequestDispatcher("/paramconnex.jsp?txtmsg="+msg).forward(request,response); }else{ try{ gesConPrj.litDFConnexionDsFichier(FichierConfig); conPrj = gesConPrj.getDfConnexion(); succesCon=true; }catch(Exception e){} if(succesCon){ getServletContext().getRequestDispatcher("/connex.html").forward(request,response); }else{ msg="Echec de connexion au serveur. Veuillez vérifier les paramètres du fichier de configuration."; getServletContext().getRequestDispatcher("/paramconnex.jsp?txtmsg="+msg).forward(request,response); } } } //Procédure DOPOST public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String msg=""; boolean succesCon=false; String srv = request.getParameter("txtsrv"); String bd = request.getParameter("txtbd"); String usr = request.getParameter("txtusr"); String pwd = request.getParameter("txtpwd"); String nom = request.getParameter("txtnom"); String des = request.getParameter("txtdes"); String typ = request.getParameter("cmbtyp"); String port = request.getParameter("txtport"); gesConPrj.setDfBd(bd); gesConPrj.setDfDesc(des); gesConPrj.setDfNom(nom); gesConPrj.setDfPort(port); gesConPrj.setDfPwd(pwd); gesConPrj.setDfSrv(srv); gesConPrj.setDfTyp(typ); gesConPrj.setDfUsr(usr); try{ gesConPrj.ecritDFConnexionDsFichier(FichierConfig); succesCon=true; } catch(Exception e){} try{ conPrj=gesConPrj.getDfConnexion(); } catch(Exception e){} if(succesCon){ getServletContext().getRequestDispatcher("/connex.jsp").forward(request,response); }else{ msg="Echec de connexion au serveur. Les paramètres spécifiés sont incorrects."; getServletContext().getRequestDispatcher("/paramconnex.jsp?txtmsg="+msg).forward(request,response); } //doGet(request, response); } public void destroy() { try{conPrj.close();}catch(Exception e){} } }
le contexte de l'application (df.xml) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?xml version="1.0" encoding="UTF-8"?> <web-app> <display-name>SMS BANKING</display-name> <servlet> <servlet-name>servletIndex</servlet-name> <servlet-class>projet.classes.controleurs</servlet-class> </servlet> <servlet-mapping> <servlet-name>servletIndex</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
l'url saisie dans le navigateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <Context path="/df" reloadable="true" docBase="D:\projets\eclipse\workspace\df" workDir="D:\projets\eclipse\workspace\df\work" />
Bien sûr la servlet est nikel (aucune erreur, aucun warning lors de la compilation). J'ai pour idée que le problème vient du fait que tomcat n'arrive pas à trouver le fichier compilé (.class) de la servlet afin de l'exécuter. La version de tomcat utilisée est : Tomcat 5.5.27, et le jdk1.6.
Code : Sélectionner tout - Visualiser dans une fenêtre à part http://127.0.0.1:8080/df/
A votre avis ? c'est koi le problème ?
Partager