IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Code retour toujours égale à 0 !


Sujet :

Java

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Code retour toujours égale à 0 !
    Bonjour,

    Je rencontre un petit souci de récupération de code retour.
    J'exécute un code JAVA à travers un script shell (ksh) et j'ai remarqué que, quel que soit le code retour définit dans mon source JAVA, mon shell récupère toujours 0 ($?).

    Alors j'ai créé un code java tout simple qui ne fait que retourner un code retour différent de 0 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Test {
        public static void main(String[] args) {
            System.exit(8);
        }    
    }
    Si je compile et exécute ce code à travers le shell en appelant la commande suivante : java Test
    mon shell récupère bien un code retour égal à 8.

    Mais moi, j'ai besoin de créer un JAR parce que mon source ne se résume pas à un seul fichier. Ce JAR, je le crée sous eclipse et lorsque j'exécute dans mon shell la commande suivante : java -classpath test.jar Test
    ...c'est le drame et je ne récupère pas le code retour 8 mais 0

    Avez vous une idée pour me sauver la vie... y aurait il une option cachée qu'il faudrait définir lors de l'exécution du code.

    Je vous remercie par avance de votre aide !!!

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Es-tu sûr que ton application se termine bien par un System.exit() ?

    a++

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    oui sans aucun doute.

    En fait, la code JAVA qui est exécuté consiste à convertir un fichier TXT dans un format XML particulier et si le format du fichier en entrée n'est pas correct, alors une exception est soulevée et dans le catch, apres un affichage du message de l'exception, genre, le format n'est pas correct, j'ai écrit un System.exit(8).

    voila...

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Tu passes bien dans le catch ? On pourrait voir le code correspondant ?

    [edit] Ainsi que la commande du shell que tu utilises pour lancer le programme et récupérer son code de retour...

    a++

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    En fait, la génération d'un jar à travers eclipse d'un projet contenant le code simple suivant donne exactement le même résultat :

    public class ProcessConverter {
    public static void main(String[] args) {
    System.exit(8);
    }
    }

    J'ai l'impression que c'est le fait d'appeler une méthode d'une classe contenue dans un JAR qui inhibe les codes retours...

    voici les commandes KSH que j'exécute :
    java -classpath monjar.jar com.processing.ProcessConverter

    En esperant que ces infos soient suffisantes je tenais a vous remercier encore pour votre aide

  6. #6
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    je ne sais pas si ça va faire avancer le schmilblik mais j'ai eu le meme pb il y a qques mois ....

    et ça venait de ma manière de récuperer la valeur de retour dans mon script sh

    donc voilà, vérifie ça ça ne coute rien

    Si mes souvenirs sont bons, je faisais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java ...
    $test = 1
    $ret=$ERRORLEVEL
    à la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java ...
    $ret=$ERRORLEVEL 
    $test=1
    du coup dans la version fausse, le dernier code de retour était 0 puisque mon affectation s'était faite sans erreur ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  7. #7
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    euh, je ne suis pas sur de bien comprendre parce que j'ai tester le contenu de la variable $ERRORLEVEL et elle ne me retourne rien

    Je pense que cette variable est plus adaptée pour un environnement Windows, non ?
    Je travaille dans un environnement UNIX SOLARIS... pour info

  8. #8
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par jassuregrave
    euh, je ne suis pas sur de bien comprendre parce que j'ai tester le contenu de la variable $ERRORLEVEL et elle ne me retourne rien

    Je pense que cette variable est plus adaptée pour un environnement Windows, non ?
    Je travaille dans un environnement UNIX SOLARIS... pour info
    oui autant pour moi, en fait j'avais deux versions des scripts et c'est bien sûr $? pour la version Unix ... C'est juste pour souligner que la manière de lire (enfin le moment du coup) est très important. J'ai testé pleins de trucs avant de me rendre compte de mon erreur ...

    (un peu comme toi ptet )
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  9. #9
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Oui c'est bien ce que je fais en effet, je recupere la valeur de retour en faisant un $? mais je récupere toujours un code egal a 0 même si c'est pas le cas.

  10. #10
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Ayé !!! j'ai trouvé... en fait ce que je faisais c'est ca :
    java -classpath monjar.jar com.processing.ProcessConverter | tee -a monlog.log

    et en gros mon java retournait un code retour supérieur a 0 mais comme la redirection dans un fichier de log se déroulait bien, le code retour actualisé était devenu 0.
    Je me rends compte que j'avais négligé de le mentionner dans ma description de probleme... désolé ;(

    Milles excuses aussi pour vous avoir dérangé et merci encore pour vos conseils !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Execution programme et récupération du code retour
    Par Dr_GonZO dans le forum Langage
    Réponses: 5
    Dernier message: 12/07/2005, 15h20
  2. Récupérer le code retour d'un batch
    Par mick84m dans le forum Linux
    Réponses: 4
    Dernier message: 11/05/2005, 17h09
  3. CODE RETOUR GENERE PAR PL/SQL POUR SHELL UNIX
    Par mimi_été dans le forum PL/SQL
    Réponses: 6
    Dernier message: 18/11/2004, 08h32
  4. code retour UNIX sur erreur ORA
    Par vinz_07 dans le forum Administration
    Réponses: 7
    Dernier message: 25/08/2004, 11h04
  5. [commande DOS] Récupérer le code retour d'un programme
    Par bobunny dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 04/06/2004, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo