Bonsoir sfx,
Meilleurs voeux pour 2004. J'ai réglé mon problème en utilisant l'interface founie dans le package standard de JAVA, mais je me retrouve avec le même problème qu'avant, c'est à dire une erreur interne du servlet qui ne trouve pas la classe de mon package. Voici donc le message d'erreur complet et le code source :
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import dev.test.*; // Mon package que j'importe
// si je ne met pas abstract dans la declaration, il me fait une erreur à la compile
public abstract class emprunt extends test implements Servlet {
public void handleError(Exception e, HttpServletResponse res) throws ServletException, IOException
{
res.setContentType("text/html");
PrintWriter out=res.getWriter();
// HTML est une classe créé séparément, elle fonctionne normalement
HTML h=new HTML("Calcul de l'emprunt : erreur");
h.add(HTML.HEADING, "Une erreur est survenue...", false);
h.add(HTML.LINE, "", false);
h.add(HTML.NORMAL, e.getMessage(), false);
out.println(h.getPage());
out.close();
}
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
// Extrait les valeurs des paramètres sous forme de chaînes.
String principalAsString=req.getParameter("capital");
String interestAsString=req.getParameter("interet");
String paymentAsString=req.getParameter("mensualite");
float principal, interest, payment;
// Initialise contenant la durée de remboursement
int months;
try
{
// Les fonctions qui provoquent l'erreur ne trouvant pas leur classe d'origine
principal=stringToFloat(principalAsString);
interest=stringToFloat(interestAsString);
payment=stringToFloat(paymentAsString);
// Utilise la classe emprunt pour obtenir sa durée
months=calculateLoanPeriod(principal, interest, payment);
}
catch (NumberFormatException e)
{
handleError(new NumberFormatException("Vérifier que vous avez rentré des valeurs numériques."), res);
return;
}
catch (Exception e)
{
handleError(e, res);
return;
}
res.setContentType("text/html");
PrintWriter out=res.getWriter();
HTML h=new HTML("Calcul de l'emprunt : résultats");
h.add(HTML.HEADING, "Résultats du calcul de l'emprunt", false);
h.add(HTML.LINE, "", false);
h.add(HTML.NORMAL, "Capital en E : ", false);
h.add(HTML.NORMAL, Float.toString(principal), true);
h.add(HTML.NORMAL, "Intérêt : ", false);
h.add(HTML.NORMAL, Float.toString(interest), true);
h.add(HTML.NORMAL, "Mensualité : ", false);
h.add(HTML.NORMAL, Float.toString(payment), true);
h.add(HTML.NORMAL, "Nombre de mensualités : ", false);
h.add(HTML.NORMAL, Integer.toString(months), true);
out.println(h.getPage());
out.close();
}
}
Error: 500
Internal Servlet Error:
// L'ordinateur cherche dans dev/test/test alors qu'il devrait chercher dans dev/test, j'ai cherché partout ou j'aurais pu faire cette erreur. le fichier JAR représentant le package a bien dev/test
java.lang.NoClassDefFoundError: dev/test/test
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:250)
at java.net.URLClassLoader.access$100(URLClassLoader.java:54)
at java.net.URLClassLoader$1.run(URLClassLoader.java:193)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)
at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
at java.lang.ClassLoader.findSystemClass(ClassLoader.java:666)
at com.sun.web.core.ServletLoader.loadClass(ServletLoader.java:73)
at com.sun.web.core.ServletLoader.loadServlet(ServletLoader.java:31)
at com.sun.web.core.ServletWrapper.loadServlet(ServletWrapper.java:91)
at com.sun.web.core.ServletWrapper.handleRequest(ServletWrapper.java:119)
at com.sun.web.core.InvokerServlet.service(InvokerServlet.java:168)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:840)
at com.sun.web.core.ServletWrapper.handleRequest(ServletWrapper.java:155)
at com.sun.web.core.Context.handleRequest(Context.java:414)
at com.sun.web.server.ConnectionHandler.run(ConnectionHandler.java:139)


