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 :
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
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
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){}
	}
 
}
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
<?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>
le contexte de l'application (df.xml) :
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" />
l'url saisie dans le navigateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
http://127.0.0.1:8080/df/
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.
A votre avis ? c'est koi le problème ?