Bonjour à tous,
Je développe une architecture Web de type client serveur avec Tomcat. Je travaille avec des servlets et voilà mon problème :
- J'ai développé un certains nombre de classes qui sont regoupées dans un Jar.
- En plus de mes classes perso sont incluses certaines bibliothèques nécessaires à la compilation d'une classe utilisant cette archive (appelons la outils.jar). Ces librairies sont (entre autres) les trois librairies de servlet nécessaires à développer des Servlets sous eclipse (servlet-api.jar, jsp-api.jar et jasper-runtime.jar), plus une autre JLink.jar qui permet de brancher un environnement Mathematica (pour les connaisseurs).
- Sur mon serveur, j'ai une servlet principale dont le rôle est de générer automatiquement des Servlets. En fait c'est le code Java de la servlet qui est généré, tout le système de fichiers permettant d'avoir un projet tomcat opérationnel est aussi créé et les bons fichiers sont placés dans les bons répertoires (notamment outil.jar est placé dans WEB-INF/lib). Une fois tout ça effectué, je cherche à compiler le fichier java généré pour avoir le .class correspondant à la servlet utilisable par le serveur.
Dans un premier temps, j'ai essayé de faire appel au compilateur directement dans le source
Code :
- Runtime.exec("javac", blablabla);
|
mais la commande javac refuse de s'executer. J'ai essayé de pleins de façons différentes mais rien à faire.
Qu'à cela ne tienne, je contourne en créant un fichier bat qui lance la commande. Et c'est ce fichier que j'exécute dans ma classe Java. Dans une console je me suis assuré que cette commande était correcte. La voici :
Code :
- javac -d classes -cp lib/outils.jar src/MaServlet.java
|
Et là, c'est le drame : quand je teste ça sur le serveur, j'ai le message d'erreur apparemment assez classique :
Citation :
See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
|
En farfouillant à droite à gauche, je me suis rendu compte que le problème vient des 3 fichiers jar que j'ai inclu dans mon propre jar. La suggestion c'est généralement de les supprimer. Sauf que quand je les enlèves, ça ne compile plus au motif qu'il ne connaits plus les packages servlets, et quand je les mets ça me donne cette détestable erreur d' "offending classes".
Je vous soumets donc ce problème, en espérant que quelqu'un de plus perspicace que moi voit là où ça coince.
Merci d'avance !
EDIT : au fait, je suis sous windows. Je suis pas sûr d'avoir été très clair dans mon post. Donc si vous voulez plus d'éclaircissements n'hésitez pas...
Message édité par IndyGroumpf le 01-06-2006 à 16:41:12