Passer le code de retour de mon appli java au système
4 réponses
figus
Salut à tous
Je suis débutant confirmé en java, et je pense que ma question a déjà
été posée à de nombreuses reprises. J'ai bien fait quelques recherches
avec google, mais je n'ai pas trouvé de réponse.
Je m'adresse donc à vous.
J'ai une appli java (appelons-là Bidule) qui fait un certain nombre de
traitements, le choix du traitement étant spécifié en argument (par
exemple, Bidule traitement1).
J'ai un wrapper en shell, qui permet d'appeler l'appli java à
concurrence de tous les traitements possibles (par exemple, wrapper.sh
traitement1).
Chaque traitement renvoie son status via un System.exit(status).
Le problème, c'est que je n'arrive pas à récupérer le status depuis le
wrapper. J'ai l'impression que la JVM renvoie 0 quoiqu'il arrive.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
figus
Bonjour à tous
Une petite précision sur mon problème.
Ca n'est pas tant de récupérer le code retour que je n'arrive pas à faire, mais plutôt de récupérer la valeur que renvoie mon appli java.
En gros, si je fais un System.exit(42) dans mon appli, et que je fais : java Bidule echo $?
$? vaut 0 et non pas 42, comme si la JVM ne transmettait pas la valeur au système.
Quelqu'un aurait-il une idée du pourquoi ? Et aussi du comment récupérer la valeur de mon appli java ?
Merci.
figus wrote:
Salut à tous
Je suis débutant confirmé en java, et je pense que ma question a déjà été posée à de nombreuses reprises. J'ai bien fait quelques recherches avec google, mais je n'ai pas trouvé de réponse.
Je m'adresse donc à vous.
J'ai une appli java (appelons-là Bidule) qui fait un certain nombre de traitements, le choix du traitement étant spécifié en argument (par exemple, Bidule traitement1).
J'ai un wrapper en shell, qui permet d'appeler l'appli java à concurrence de tous les traitements possibles (par exemple, wrapper.sh traitement1).
Chaque traitement renvoie son status via un System.exit(status).
Le problème, c'est que je n'arrive pas à récupérer le status depuis le wrapper. J'ai l'impression que la JVM renvoie 0 quoiqu'il arrive.
Merci d'avance pour votre aide.
Bonjour à tous
Une petite précision sur mon problème.
Ca n'est pas tant de récupérer le code retour que je n'arrive pas à
faire, mais plutôt de récupérer la valeur que renvoie mon appli java.
En gros, si je fais un System.exit(42) dans mon appli, et que je fais :
java Bidule
echo $?
$? vaut 0 et non pas 42, comme si la JVM ne transmettait pas la valeur
au système.
Quelqu'un aurait-il une idée du pourquoi ? Et aussi du comment récupérer
la valeur de mon appli java ?
Merci.
figus wrote:
Salut à tous
Je suis débutant confirmé en java, et je pense que ma question a déjà
été posée à de nombreuses reprises. J'ai bien fait quelques recherches
avec google, mais je n'ai pas trouvé de réponse.
Je m'adresse donc à vous.
J'ai une appli java (appelons-là Bidule) qui fait un certain nombre de
traitements, le choix du traitement étant spécifié en argument (par
exemple, Bidule traitement1).
J'ai un wrapper en shell, qui permet d'appeler l'appli java à
concurrence de tous les traitements possibles (par exemple, wrapper.sh
traitement1).
Chaque traitement renvoie son status via un System.exit(status).
Le problème, c'est que je n'arrive pas à récupérer le status depuis le
wrapper. J'ai l'impression que la JVM renvoie 0 quoiqu'il arrive.
Ca n'est pas tant de récupérer le code retour que je n'arrive pas à faire, mais plutôt de récupérer la valeur que renvoie mon appli java.
En gros, si je fais un System.exit(42) dans mon appli, et que je fais : java Bidule echo $?
$? vaut 0 et non pas 42, comme si la JVM ne transmettait pas la valeur au système.
Quelqu'un aurait-il une idée du pourquoi ? Et aussi du comment récupérer la valeur de mon appli java ?
Merci.
figus wrote:
Salut à tous
Je suis débutant confirmé en java, et je pense que ma question a déjà été posée à de nombreuses reprises. J'ai bien fait quelques recherches avec google, mais je n'ai pas trouvé de réponse.
Je m'adresse donc à vous.
J'ai une appli java (appelons-là Bidule) qui fait un certain nombre de traitements, le choix du traitement étant spécifié en argument (par exemple, Bidule traitement1).
J'ai un wrapper en shell, qui permet d'appeler l'appli java à concurrence de tous les traitements possibles (par exemple, wrapper.sh traitement1).
Chaque traitement renvoie son status via un System.exit(status).
Le problème, c'est que je n'arrive pas à récupérer le status depuis le wrapper. J'ai l'impression que la JVM renvoie 0 quoiqu'il arrive.
Merci d'avance pour votre aide.
flipouk
figus wrote:
Bonjour à tous
Une petite précision sur mon problème.
Ca n'est pas tant de récupérer le code retour que je n'arrive pas à faire, mais plutôt de récupérer la valeur que renvoie mon appli java.
En gros, si je fais un System.exit(42) dans mon appli, et que je fais : java Bidule echo $?
$? vaut 0 et non pas 42, comme si la JVM ne transmettait pas la valeur au système.
Quelqu'un aurait-il une idée du pourquoi ? Et aussi du comment récupérer la valeur de mon appli java ? Je viens de tester le code suivant :
--------8<--------- class Bidule { public static void main(String[] args) { System.out.println("Doing nothing. Exiting at once."); System.exit(42); } } ------->8---------- [bash]$ javac Bidule.java [bash]$ java Bidule Doing nothing. Exiting at once. [bash]$ echo $? 42 Je n'arrive pas à reproduire ton problème... Quel $SHELL utilises-tu ? Quelle version de Java ? J'ai testé avec Java5 et bash sous Mandrake -- ou peut-être doit-on dire "Mandriva", maintenant :( F.
figus wrote:
Bonjour à tous
Une petite précision sur mon problème.
Ca n'est pas tant de récupérer le code retour que je n'arrive pas à
faire, mais plutôt de récupérer la valeur que renvoie mon appli java.
En gros, si je fais un System.exit(42) dans mon appli, et que je fais :
java Bidule
echo $?
$? vaut 0 et non pas 42, comme si la JVM ne transmettait pas la valeur
au système.
Quelqu'un aurait-il une idée du pourquoi ? Et aussi du comment récupérer
la valeur de mon appli java ?
Je viens de tester le code suivant :
--------8<---------
class Bidule {
public static void main(String[] args) {
System.out.println("Doing nothing. Exiting at once.");
System.exit(42);
}
}
------->8----------
[bash]$ javac Bidule.java
[bash]$ java Bidule
Doing nothing. Exiting at once.
[bash]$ echo $?
42
Je n'arrive pas à reproduire ton problème... Quel $SHELL utilises-tu ?
Quelle version de Java ?
J'ai testé avec Java5 et bash sous Mandrake -- ou peut-être doit-on dire
"Mandriva", maintenant :(
F.
Ca n'est pas tant de récupérer le code retour que je n'arrive pas à faire, mais plutôt de récupérer la valeur que renvoie mon appli java.
En gros, si je fais un System.exit(42) dans mon appli, et que je fais : java Bidule echo $?
$? vaut 0 et non pas 42, comme si la JVM ne transmettait pas la valeur au système.
Quelqu'un aurait-il une idée du pourquoi ? Et aussi du comment récupérer la valeur de mon appli java ? Je viens de tester le code suivant :
--------8<--------- class Bidule { public static void main(String[] args) { System.out.println("Doing nothing. Exiting at once."); System.exit(42); } } ------->8---------- [bash]$ javac Bidule.java [bash]$ java Bidule Doing nothing. Exiting at once. [bash]$ echo $? 42 Je n'arrive pas à reproduire ton problème... Quel $SHELL utilises-tu ? Quelle version de Java ? J'ai testé avec Java5 et bash sous Mandrake -- ou peut-être doit-on dire "Mandriva", maintenant :( F.
figus
Je bosse sous Solaris 9 avec /bin/sh et le Java 1.4.2_05-b04.
Mais, je ne comprends pas, chez moi aussi maintenant ça marche ! Sans doute un vilain tour de vendredi soir...
J'ai du changer qqch depuis mais je ne sais pas quoi.
Merci.
flipouk wrote:
Je viens de tester le code suivant : --------8<--------- class Bidule { public static void main(String[] args) { System.out.println("Doing nothing. Exiting at once."); System.exit(42); } } ------->8---------- [bash]$ javac Bidule.java [bash]$ java Bidule Doing nothing. Exiting at once. [bash]$ echo $? 42 Je n'arrive pas à reproduire ton problème... Quel $SHELL utilises-tu ? Quelle version de Java ? J'ai testé avec Java5 et bash sous Mandrake -- ou peut-être doit-on dire "Mandriva", maintenant :( F.
Je bosse sous Solaris 9 avec /bin/sh et le Java 1.4.2_05-b04.
Mais, je ne comprends pas, chez moi aussi maintenant ça marche ! Sans
doute un vilain tour de vendredi soir...
J'ai du changer qqch depuis mais je ne sais pas quoi.
Merci.
flipouk wrote:
Je viens de tester le code suivant :
--------8<---------
class Bidule {
public static void main(String[] args) {
System.out.println("Doing nothing. Exiting at once.");
System.exit(42);
}
}
------->8----------
[bash]$ javac Bidule.java
[bash]$ java Bidule
Doing nothing. Exiting at once.
[bash]$ echo $?
42
Je n'arrive pas à reproduire ton problème... Quel $SHELL utilises-tu ?
Quelle version de Java ?
J'ai testé avec Java5 et bash sous Mandrake -- ou peut-être doit-on dire
"Mandriva", maintenant :(
F.
Je bosse sous Solaris 9 avec /bin/sh et le Java 1.4.2_05-b04.
Mais, je ne comprends pas, chez moi aussi maintenant ça marche ! Sans doute un vilain tour de vendredi soir...
J'ai du changer qqch depuis mais je ne sais pas quoi.
Merci.
flipouk wrote:
Je viens de tester le code suivant : --------8<--------- class Bidule { public static void main(String[] args) { System.out.println("Doing nothing. Exiting at once."); System.exit(42); } } ------->8---------- [bash]$ javac Bidule.java [bash]$ java Bidule Doing nothing. Exiting at once. [bash]$ echo $? 42 Je n'arrive pas à reproduire ton problème... Quel $SHELL utilises-tu ? Quelle version de Java ? J'ai testé avec Java5 et bash sous Mandrake -- ou peut-être doit-on dire "Mandriva", maintenant :( F.
Fabrice Bacchella
On Mon, 11 Apr 2005 16:05:37 +0200, figus wrote:
Je bosse sous Solaris 9 avec /bin/sh et le Java 1.4.2_05-b04.
Mais, je ne comprends pas, chez moi aussi maintenant ça marche ! Sans doute un vilain tour de vendredi soir...
J'ai du changer qqch depuis mais je ne sais pas quoi.
java est souvent un shell qui lance qui lance un binaire. Un shell de plus mal ecrit dans la chaine ou un alias & ça pète tout. Un petit 'type java' peut aider à vérifier ce qui est effectivement utilisé. Vérifiez aussi votre $PATH. -- www.castalie.fr
On Mon, 11 Apr 2005 16:05:37 +0200, figus <karantdeu@free.fr> wrote:
Je bosse sous Solaris 9 avec /bin/sh et le Java 1.4.2_05-b04.
Mais, je ne comprends pas, chez moi aussi maintenant ça marche ! Sans
doute un vilain tour de vendredi soir...
J'ai du changer qqch depuis mais je ne sais pas quoi.
java est souvent un shell qui lance qui lance un binaire. Un shell de
plus mal ecrit dans la chaine ou un alias & ça pète tout. Un petit
'type java' peut aider à vérifier ce qui est effectivement utilisé.
Vérifiez aussi votre $PATH.
--
www.castalie.fr
Je bosse sous Solaris 9 avec /bin/sh et le Java 1.4.2_05-b04.
Mais, je ne comprends pas, chez moi aussi maintenant ça marche ! Sans doute un vilain tour de vendredi soir...
J'ai du changer qqch depuis mais je ne sais pas quoi.
java est souvent un shell qui lance qui lance un binaire. Un shell de plus mal ecrit dans la chaine ou un alias & ça pète tout. Un petit 'type java' peut aider à vérifier ce qui est effectivement utilisé. Vérifiez aussi votre $PATH. -- www.castalie.fr