Ajouter un commentaire

sylvain.saurel
[JDOM] problème avec SAXBuilder

Bonjour,

Mon problème est une peu particulier dans la mesure où il concerne plusieurs domaines mais étant donné que le vrai problème semble venir de la classe SAXBuilder de l'API JDOM je pense qu'il a sa place dans ce forum.
J'ai donc fait un programme JAVA qui prend en entrée un fichier XML et qui va dans un premier temps parser ce fichier, puis faire des traitements sur les données parsées avant de finalement créer un nouveau fichier XML résultat de ce traitement.

Ce programme fonctionne très bien dans la console. Pour l'application que je développe j'ai besoin de passer par php sur un serveur Apache2 donc pour utiliser le programme JAVA.

J'ai donc dans mon programme PHP utilisé la fonction system("java monProgramme donnees.xml", $retval); qui exécute la commande passée en paramètre dans un shell. J'ai bien vérifié que l'utilisateur sur lequel tourne le serveur Apache2 a les droits nécessaires, et que le CLASSPATH et le PATH soient bien configurés. D'ailleurs lorsque j'éxécute mon programme JAVA en mode console en étant loggué sous cet utilisateur tout marche bien.

Et là, bizarrement quand j'exécute le programme, il y a un problème. Après pas mal de temps de recherche je suis arrivé à isoler ce qui empêchait le programme de fonctionner et apparemment cela viendrait de la ligne suivante dans le programme JAVA :

SAXBuilder sxb = new SAXBuilder();

J'ai réduit au maximum mon programme pour ne laisser plus que ça dans la classe principale du programme :

public ParseurDOM()
    {
        SAXBuilder sxb = new SAXBuilder();
        System.out.println("Test");
    }

En exécutant le programme JAVA depuis PHP avec ça dans la classe principale, j'ai un retour d'exécution à 1 qui indique qu'il y a une erreur (qui ne peut donc venir que du constructeur SAXBuilder) et l'affichage de la ligne "Test" ne se fait pas.

En enlevant l'appel au constructeur SAXBuilder(), j'ai bien l'affichage de la ligne "Test". Le problème se situe donc dans le constructeur SAXBuilder().

J'ai donc été voir dans les sources de JDOM dans la classe SAXBuilder et je ne vois rien de spécial en fait. Lors de l'instanciation, il y a juste une instanciation de la classe DefaultJDOMFactory dont le constructeur ne fait rien !

Donc, je ne vois vraiment pas d'où ça peut venir à ce niveau là, je pensais à un problème de localisation du driver SAX utilisé par SAXBuilder mais même en changeant et en mettant dans le constructeur SAXBuilder() un driver SAX valide : org.apache.xerces.parsers.SAXParser par exemple (et en modifiant le classpath), le problème reste le même.

J'ai même tenté d'utiliser d'autres API du même genre comme DOM4J ou autres mais ça bloque toujours au même niveau lorsque l'on crée une instance de la classe cherchant les drivers SAX apparemment.

Quelqu'un aurait une idée de ce que je peux faire ? Peut-être modifier des options dans Apache2 (je ne vois pas trop ce que je peux modifier de plus en fait)? Modifier un chemin d'accès ? Ou peut être cela ne peut pas se faire et ça ne marchera pas ?

Merci d'avance de votre aide.

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
  GGG   TTTTTT   CCC  FFFF   CCC 
G TT C F C
G GG TT C FFF C
G G TT C F C
GGG TT CCC F CCC