Ajouter un commentaire

sylvain.saurel

Depuis hier, je suis arrivé à récupérer le message d'erreur en bidouillant un peu :

import java.io.*;
import org.jdom.*;
import org.jdom.input.*;

class TestSAX{

TestSAX()
{

}

void instanciateSAXBuilder()
{
//On crée une instance de SAXBuilder
try{
SAXBuilder sxb = new SAXBuilder();

System.out.println("Constructeur de SAX");


}catch(Throwable e){

e.printStackTrace();
}
}

}

public class Test {
public static void main (String[] args) {

PrintStream ps = null;

try{

ps = new PrintStream("./test.txt");

}catch(Exception e){

e.printStackTrace();

}

System.setOut(ps);
System.setErr(ps);
System.out.println("test");

try {
System.out.println("Step 1");
TestSAX ts = new TestSAX();
System.out.println("Step 2");
ts.instanciateSAXBuilder();
System.out.println("Step 3");
} catch (Throwable t) {
System.out.println("FAILED");
t.printStackTrace();
}


}

}

Donc en fait l'erreur se situe bien au niveau de la classe SAXBuilder. Dans le fichier test.txt, j'obtiens ça :

test
Step 1
FAILED
java.lang.NoClassDefFoundError: org/jdom/input/SAXBuilder
at Test.main(Test.java:51)

Donc effectivement, au niveau de l'exécution par PHP le CLASSPATH ne semble pas être bien reconnu.
Et même en passant le classpath avec -cp (c'est une erreur que j'avais fait dans le précédent post) à java, cela reste pareil.

J'ai essayé de faire un autre truc pour vérifier le classpath lorsque php exécute le programme. J'ai tenté de compiler le programme Test.java depuis php avec la commande javac.

Avec ça :

$line = system("/usr/bin/javac Test.java", $retval);

Une erreur se produit et cela ne compile pas, confirmant que le CLASSPATH n'est pas bon.

En revanche, lorsque je rajoute le classpath vers jdom à la commande javac là ça compile normalement et après exécution du programme php, j'ai l'exécutable Test qui est crée normalement.

$line = system("/usr/bin/javac -cp /usr/share/java/jdom.jar Test.java", $retval);

Donc, c'est bizarre qu'il accepte bien le classpath passé en paramètre quand on utilise javac mais qu'avec java cela ne passe plus.

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 V     V      J  M   M  PPPP    CCC 
V V J MM MM P P C
V V J M M M PPPP C
V V J J M M P C
V JJJ M M P CCC