Mon probl=E8me est une peu particulier dans la mesure o=F9 il concerne
plusieurs domaines mais =E9tant donn=E9 que le vrai probl=E8me 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=E9e un fichier XML et
qui va dans un premier temps parser ce fichier, puis faire des
traitements sur les donn=E9es pars=E9es avant de finalement cr=E9er un
nouveau fichier XML r=E9sultat de ce traitement.
Ce programme fonctionne tr=E8s bien dans la console. Pour l'application
que je d=E9veloppe 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=E9 la fonction system("java
monProgramme donnees.xml", $retval); qui ex=E9cute la commande pass=E9e
en param=E8tre dans un shell. J'ai bien v=E9rifi=E9 que l'utilisateur sur
lequel tourne le serveur Apache2 a les droits n=E9cessaires, et que le
CLASSPATH et le PATH soient bien configur=E9s. D'ailleurs lorsque
j'=E9x=E9cute mon programme JAVA en mode console en =E9tant loggu=E9 sous
cet utilisateur tout marche bien.
Et l=E0, bizarrement quand j'ex=E9cute le programme, il y a un probl=E8me.
Apr=E8s pas mal de temps de recherche je suis arriv=E9 =E0 isoler ce qui
emp=EAchait le programme de fonctionner et apparemment cela viendrait de
la ligne suivante dans le programme JAVA :
[CODE]
SAXBuilder sxb =3D new SAXBuilder();
[/CODE]
J'ai r=E9duit au maximum mon programme pour ne laisser plus que =E7a dans
la classe principale du programme :
[CODE]
public ParseurDOM()
{
SAXBuilder sxb =3D new SAXBuilder();
System.out.println("Test");
}
[/CODE]
En ex=E9cutant le programme JAVA depuis PHP avec =E7a dans la classe
principale, j'ai un retour d'ex=E9cution =E0 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=E8me se situe donc dans le constructeur
SAXBuilder().
J'ai donc =E9t=E9 voir dans les sources de JDOM dans la classe SAXBuilder
et je ne vois rien de sp=E9cial 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=F9 =E7a peut venir =E0 ce niveau l=E0, je
pensais =E0 un probl=E8me de localisation du driver SAX utilis=E9 par
SAXBuilder mais m=EAme 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=E8me reste le
m=EAme.
J'ai m=EAme tent=E9 d'utiliser d'autres API du m=EAme genre comme DOM4J ou
autres mais =E7a bloque toujours au m=EAme niveau lorsque l'on cr=E9e une
instance de la classe cherchant les drivers SAX apparemment.
Quelqu'un aurait une id=E9e de ce que je peux faire ? Peut-=EAtre
modifier des options dans Apache2 (je ne vois pas trop ce que je peux
modifier de plus en fait)? Modifier un chemin d'acc=E8s ? Ou peut =EAtre
cela ne peut pas se faire et =E7a ne marchera pas ?
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 e t 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 s ur 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é so us 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 qu i empêchait le programme de fonctionner et apparemment cela viendrait d e la ligne suivante dans le programme JAVA :
[CODE] SAXBuilder sxb = new SAXBuilder(); [/CODE]
J'ai réduit au maximum mon programme pour ne laisser plus que ça da ns la classe principale du programme :
[CODE] public ParseurDOM() { SAXBuilder sxb = new SAXBuilder(); System.out.println("Test"); } [/CODE]
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 un e 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 SAXBuild er 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 u ne 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 êtr e cela ne peut pas se faire et ça ne marchera pas ?
Merci d'avance de votre aide.
Heu est-ce que les librairies nécessaires sont bien dans ton classpath? Que ce soit JDom ou Dom4j, il faut que les jar soit accessible...
-- Alexandre CARTAPANIS - Responsable Système et Réseau Email Gsm. 06 72 07 51 55
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 e t
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 s ur
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é so us
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 qu i
empêchait le programme de fonctionner et apparemment cela viendrait d e
la ligne suivante dans le programme JAVA :
[CODE]
SAXBuilder sxb = new SAXBuilder();
[/CODE]
J'ai réduit au maximum mon programme pour ne laisser plus que ça da ns
la classe principale du programme :
[CODE]
public ParseurDOM()
{
SAXBuilder sxb = new SAXBuilder();
System.out.println("Test");
}
[/CODE]
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 un e
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 SAXBuild er
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 u ne
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 êtr e
cela ne peut pas se faire et ça ne marchera pas ?
Merci d'avance de votre aide.
Heu est-ce que les librairies nécessaires sont bien dans ton classpath?
Que ce soit JDom ou Dom4j, il faut que les jar soit accessible...
--
Alexandre CARTAPANIS - Responsable Système et Réseau
Email alexandre.cartapanis@macymed.fr
Gsm. 06 72 07 51 55
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 e t 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 s ur 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é so us 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 qu i empêchait le programme de fonctionner et apparemment cela viendrait d e la ligne suivante dans le programme JAVA :
[CODE] SAXBuilder sxb = new SAXBuilder(); [/CODE]
J'ai réduit au maximum mon programme pour ne laisser plus que ça da ns la classe principale du programme :
[CODE] public ParseurDOM() { SAXBuilder sxb = new SAXBuilder(); System.out.println("Test"); } [/CODE]
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 un e 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 SAXBuild er 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 u ne 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 êtr e cela ne peut pas se faire et ça ne marchera pas ?
Merci d'avance de votre aide.
Heu est-ce que les librairies nécessaires sont bien dans ton classpath? Que ce soit JDom ou Dom4j, il faut que les jar soit accessible...
-- Alexandre CARTAPANIS - Responsable Système et Réseau Email Gsm. 06 72 07 51 55
Oui, j'ai bien mis les chemins vers les jar dans le CLASSPATH. Et j'ai bien vérifié que l'utilisateur sur lequel tourne Apache (www-data) donc l'utilisateur qui va exécuter le script ait bien le bon CLASSPATH et c'est le cas. Dans le CLASSPATH, j'ai ça :
Et puis lorsque j'exécute le programme java en tant que www-data, tout se passe correctement donc il a accès normalement à ces jar.
Oui, j'ai bien mis les chemins vers les jar dans le CLASSPATH.
Et j'ai bien vérifié que l'utilisateur sur lequel tourne Apache
(www-data) donc l'utilisateur qui va exécuter le script ait bien le
bon CLASSPATH et c'est le cas.
Dans le CLASSPATH, j'ai ça :
Oui, j'ai bien mis les chemins vers les jar dans le CLASSPATH. Et j'ai bien vérifié que l'utilisateur sur lequel tourne Apache (www-data) donc l'utilisateur qui va exécuter le script ait bien le bon CLASSPATH et c'est le cas. Dans le CLASSPATH, j'ai ça :
Et puis lorsque j'exécute le programme java en tant que www-data, tout se passe correctement donc il a accès normalement à ces jar.
alexandre cartapanis
Oui, j'ai bien mis les chemins vers les jar dans le CLASSPATH. Et j'ai bien vérifié que l'utilisateur sur lequel tourne Apache (www-data) donc l'utilisateur qui va exécuter le script ait bien le bon CLASSPATH et c'est le cas. Dans le CLASSPATH, j'ai ça :
Oui, j'ai bien mis les chemins vers les jar dans le CLASSPATH.
Et j'ai bien vérifié que l'utilisateur sur lequel tourne Apache
(www-data) donc l'utilisateur qui va exécuter le script ait bien le
bon CLASSPATH et c'est le cas.
Dans le CLASSPATH, j'ai ça :
Oui, j'ai bien mis les chemins vers les jar dans le CLASSPATH. Et j'ai bien vérifié que l'utilisateur sur lequel tourne Apache (www-data) donc l'utilisateur qui va exécuter le script ait bien le bon CLASSPATH et c'est le cas. Dans le CLASSPATH, j'ai ça :
Il faut déterminer la nature de l'erreur. Que donne la sortie de :
[CODE] public ParseurDOM() {
try {
SAXBuilder sxb = new SAXBuilder(); System.out.println("Test");
} catch (Exception e) { e.printStackTrace(); }
} [/CODE]
-- David Jourand
Alberto Cabello Sanchez
sylsau wrote:
Oui, j'ai bien mis les chemins vers les jar dans le CLASSPATH. Et j'ai bien vérifié que l'utilisateur sur lequel tourne Apache (www-data) donc l'utilisateur qui va exécuter le script ait bien le bon CLASSPATH et c'est le cas.
Oui, j'ai bien mis les chemins vers les jar dans le CLASSPATH.
Et j'ai bien vérifié que l'utilisateur sur lequel tourne Apache
(www-data) donc l'utilisateur qui va exécuter le script ait bien le
bon CLASSPATH et c'est le cas.
Oui, j'ai bien mis les chemins vers les jar dans le CLASSPATH. Et j'ai bien vérifié que l'utilisateur sur lequel tourne Apache (www-data) donc l'utilisateur qui va exécuter le script ait bien le bon CLASSPATH et c'est le cas.
j'ai essayé en rajoutant le classpath de jdom en lançant le programme java mais ça ne change rien.
Je viens d'essayer avec le try catch. Ca ne me renvoie rien c'est ça le pire ! Il y a pourtant une erreur puisque le code de retour du programme java est 1 mais rien ne s'affiche dans le catch. Ca aide pas pour trouver d'où vient le problème
j'ai essayé en rajoutant le classpath de jdom en lançant le programme
java mais ça ne change rien.
Je viens d'essayer avec le try catch. Ca ne me renvoie rien c'est ça
le pire ! Il y a pourtant une erreur puisque le code de retour du
programme java est 1 mais rien ne s'affiche dans le catch. Ca aide pas
pour trouver d'où vient le problème
j'ai essayé en rajoutant le classpath de jdom en lançant le programme java mais ça ne change rien.
Je viens d'essayer avec le try catch. Ca ne me renvoie rien c'est ça le pire ! Il y a pourtant une erreur puisque le code de retour du programme java est 1 mais rien ne s'affiche dans le catch. Ca aide pas pour trouver d'où vient le problème
sylsau
Voici les deux programmes que j'utilises :
- le programme java (réduit au minimum ici)
import org.jdom.*; import org.jdom.input.*;
public class JDOM3 { static org.jdom.Document document; static Element racine;
public static void main(String[] args) { //On crée une instance de SAXBuilder try{
SAXBuilder sxb = new SAXBuilder(); System.out.println("test");
- Et la librairie JDOM : http://www.jdom.org/dist/binary/jdom-1.0.zip Il suffit de prendre l'archive jdom.jar se trouvant dans le dossier build une fois l'archive zip décompressée. Et ensuite d'ajouter au classpath jdom.jar
Si quelqu'un a le temps d'essayer sur son serveur perso, ça serait sympa pour voir si ça marche chez quelqu'un (auquel cas voir la configuration qu'il a comparé à moi) au moins.
Merci d'avance.
Voici les deux programmes que j'utilises :
- le programme java (réduit au minimum ici)
import org.jdom.*;
import org.jdom.input.*;
public class JDOM3
{
static org.jdom.Document document;
static Element racine;
public static void main(String[] args)
{
//On crée une instance de SAXBuilder
try{
SAXBuilder sxb = new SAXBuilder();
System.out.println("test");
- Et la librairie JDOM : http://www.jdom.org/dist/binary/jdom-1.0.zip
Il suffit de prendre l'archive jdom.jar se trouvant dans le dossier
build une fois l'archive zip décompressée. Et ensuite d'ajouter au
classpath jdom.jar
Si quelqu'un a le temps d'essayer sur son serveur perso, ça serait
sympa pour voir si ça marche chez quelqu'un (auquel cas voir la
configuration qu'il a comparé à moi) au moins.
- Et la librairie JDOM : http://www.jdom.org/dist/binary/jdom-1.0.zip Il suffit de prendre l'archive jdom.jar se trouvant dans le dossier build une fois l'archive zip décompressée. Et ensuite d'ajouter au classpath jdom.jar
Si quelqu'un a le temps d'essayer sur son serveur perso, ça serait sympa pour voir si ça marche chez quelqu'un (auquel cas voir la configuration qu'il a comparé à moi) au moins.
Merci d'avance.
David JOURAND
Je viens d'essayer avec le try catch. Ca ne me renvoie rien c'est ça le pire ! Il y a pourtant une erreur puisque le code de retour du programme java est 1 mais rien ne s'affiche dans le catch. Ca aide pas pour trouver d'où vient le problème
C'est sans doute une Error qui est lancée... Il faut donc remplacer :
} catch (Exception e) {
par :
} catch (Throwable e) {
et voir ce que cela donne...
-- David Jourand
Je viens d'essayer avec le try catch. Ca ne me renvoie rien c'est ça
le pire ! Il y a pourtant une erreur puisque le code de retour du
programme java est 1 mais rien ne s'affiche dans le catch. Ca aide pas
pour trouver d'où vient le problème
C'est sans doute une Error qui est lancée... Il faut donc remplacer :
Je viens d'essayer avec le try catch. Ca ne me renvoie rien c'est ça le pire ! Il y a pourtant une erreur puisque le code de retour du programme java est 1 mais rien ne s'affiche dans le catch. Ca aide pas pour trouver d'où vient le problème
C'est sans doute une Error qui est lancée... Il faut donc remplacer :
} catch (Exception e) {
par :
} catch (Throwable e) {
et voir ce que cela donne...
-- David Jourand
sylsau
Je viens d'essayer avec Throwable et toujours pas d'affichage d'un quelconque message d'erreur.
Je viens d'essayer avec Throwable et toujours pas d'affichage d'un
quelconque message d'erreur.
Je viens d'essayer avec Throwable et toujours pas d'affichage d'un quelconque message d'erreur.
alexandre cartapanis
Je viens d'essayer avec Throwable et toujours pas d'affichage d'un quelconque message d'erreur.
Ouais mais ça c'est normal, PHP ne peut récupérer que la valeur de retour, pas la sortie "texte". Ce que tu peux faire, c'est de rediriger la sortie dans un fichier. Par exemple:
try { //code a problème... } catch (Exception excp) { PrintStream out = new PrintStream("/var/log/test"); excp.printStackTrace(out); out.close(); }
tu exécutes ton code en PHP, et normalement, dans le fichier /var/log/test, tu dois avoir l'erreur.
Une autre solution, c'est de recuperer la totalité de ta sortie dans le fichier.
En faisant (en tout premier, ça doit être la première instruction d u main par exemple):
PrintStream out = new PrintStream("/var/log/test"); System.setOut(out); System.setErr(out);
Et laisser ton excp.printStackTrace(); (qui est automatiquement redirigé vers System.out).
-- Alexandre CARTAPANIS - Responsable Système et Réseau Email Gsm. 06 72 07 51 55
Je viens d'essayer avec Throwable et toujours pas d'affichage d'un
quelconque message d'erreur.
Ouais mais ça c'est normal, PHP ne peut récupérer que la valeur de
retour, pas la sortie "texte".
Ce que tu peux faire, c'est de rediriger la sortie dans un fichier.
Par exemple:
try {
//code a problème...
} catch (Exception excp) {
PrintStream out = new PrintStream("/var/log/test");
excp.printStackTrace(out);
out.close();
}
tu exécutes ton code en PHP, et normalement, dans le fichier
/var/log/test, tu dois avoir l'erreur.
Une autre solution, c'est de recuperer la totalité de ta sortie dans le
fichier.
En faisant (en tout premier, ça doit être la première instruction d u
main par exemple):
PrintStream out = new PrintStream("/var/log/test");
System.setOut(out);
System.setErr(out);
Et laisser ton excp.printStackTrace(); (qui est automatiquement redirigé
vers System.out).
--
Alexandre CARTAPANIS - Responsable Système et Réseau
Email alexandre.cartapanis@macymed.fr
Gsm. 06 72 07 51 55
Je viens d'essayer avec Throwable et toujours pas d'affichage d'un quelconque message d'erreur.
Ouais mais ça c'est normal, PHP ne peut récupérer que la valeur de retour, pas la sortie "texte". Ce que tu peux faire, c'est de rediriger la sortie dans un fichier. Par exemple:
try { //code a problème... } catch (Exception excp) { PrintStream out = new PrintStream("/var/log/test"); excp.printStackTrace(out); out.close(); }
tu exécutes ton code en PHP, et normalement, dans le fichier /var/log/test, tu dois avoir l'erreur.
Une autre solution, c'est de recuperer la totalité de ta sortie dans le fichier.
En faisant (en tout premier, ça doit être la première instruction d u main par exemple):
PrintStream out = new PrintStream("/var/log/test"); System.setOut(out); System.setErr(out);
Et laisser ton excp.printStackTrace(); (qui est automatiquement redirigé vers System.out).
-- Alexandre CARTAPANIS - Responsable Système et Réseau Email Gsm. 06 72 07 51 55