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

Langage Java Discussion :

Processbuilder un jar puis Quitter


Sujet :

Langage Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2012
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 106
    Points : 63
    Points
    63
    Par défaut Processbuilder un jar puis Quitter
    Salut,

    une question qui me tarabuste depuis un moment,

    j'ai un jar principal qui est lancé par un jar de mise à jour, or je voudrais qu'une fois celui ci lancé, le jar "lanceur" s’arrête.

    Je lance mon jar via un processBuilder, que je set en daemon

    ici ma méthode d'appel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     private static void LaunchApplication(ArrayList<String> args) {
    	   Lanc_Appli test = new Lanc_Appli(args);
    	   Thread standAlo = new Thread(test);
    	   standAlo.setDaemon(true);
    	   standAlo.start();
        }
    et ici ma classe processBuilder

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public class Lanc_Appli implements Runnable{
     
        private static Logger logger = Logger.getLogger(Lanc_Appli.class);
        private ArrayList<String> arguments = new ArrayList<String>();
        public Lanc_Appli(ArrayList<String> arguments) {
    	   this.arguments =arguments;
        }
     
        @Override
        public void run() {
     
    	   Process p = null;
    	   try {
     
    		  ProcessBuilder pb = new ProcessBuilder(arguments);
     
    		  pb = pb.redirectErrorStream(true);
     
    		  p = pb.start();
     
    		  AfficheurFlux flux = new AfficheurFlux(p.getInputStream());
                new Thread(flux).start();
     
    	   } catch (IOException e) {
    		  logger.fatal("exception processus", e);
    		  p.destroy();
    	   } 
        }
     
    }
    j'ai fait exprès de ne pas avoir de waitfor, mais j'ai toujours une relation établie malgré des system.exit(0) , bref quelqu'un aurait une idée ??

  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,

    Citation Envoyé par Gaspard22 Voir le message
    j'ai fait exprès de ne pas avoir de waitfor, mais j'ai toujours une relation établie malgré des system.exit(0) , bref quelqu'un aurait une idée ??
    Que veux-tu dire exactement par "une relation" ?
    Et le code que tu fournis ne comporte pas de System.exit(0)...


    Mais je ne comprend pas ce que tu cherches à faire. Tu veux lancer un programme et quitter le programme en cours ?
    Si oui à quoi servent tous ces threads ?
    Ton code devrait se résumer à deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    new ProcessBuilder(arguments).start();
    System.exit(0);

    Je pense que je dois louper un truc...


    a++

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    pareil, quitter l'application en cours ne tue pas le process enfant, donc tu peux a priori te contenter de démarrer puis faire le System.exit sans t'amuser avec les Threads.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2012
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 106
    Points : 63
    Points
    63
    Par défaut
    J'essaye de tuer le processus parent et non enfant.

    j'ai 2 processus java dans le gestionnaire de taches, et vu qu'une fois le processus enfant lancé je n'ai plus besoin du parent, j'aurais aimé l’arrêter proprement, ma façon de procéder m'a pas l'air sure à 100 %


    bref, je pensais trouver une solution sur la partie du processus parent, mais je ne vois pas de ce coté

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ben system.exit tue le processus courant, donc tu n'a qu'à le faire depuis le parent Qu'est-ce qui t'ennuie dans cette manière de faire?

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2012
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 106
    Points : 63
    Points
    63
    Par défaut
    ben lorsque j’exécute la méthode system exit, le processus enfant disparaît aussi...

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ca ne devrais pas, sauf si tu as mis du code spécifique dans le processus enfant pour le faire.

  8. #8
    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
    Quel est le code exact que tu utilises finalement ?
    Quel est la commande que tu exécutes via le ProcessBuilder ?

    Le programme que tu lances doit sûrement lire son flux d'entrée.
    Si tu es sous Java 7 tu peux utiliser inheritIO() du ProcessBuilder pour l'associer au stdin système...


    a++

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2012
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 106
    Points : 63
    Points
    63
    Par défaut
    en fait, mon system.exit() était mal positionné. A force de faire des modifications, je ne laissais pas assez de temps à mon processus enfant pour se lancer.

    merci de votre aide en tout cas

  10. #10
    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
    Comment tu as pu arriver à mal le positionner : il faut juste 2 lignes de code !!!

    a++

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

Discussions similaires

  1. Création d'un JAR puis d'un exécutable via Launch4j
    Par GuyMH dans le forum Eclipse Java
    Réponses: 15
    Dernier message: 11/02/2015, 08h51
  2. Réponses: 3
    Dernier message: 04/03/2013, 18h55
  3. Réponses: 18
    Dernier message: 29/05/2012, 09h10
  4. [JavaExe] Export jar puis exe
    Par alexDe dans le forum EDI et Outils pour Java
    Réponses: 2
    Dernier message: 15/03/2009, 16h05
  5. transformer les .jar en .class puis en .java
    Par sonia5 dans le forum Général Java
    Réponses: 15
    Dernier message: 10/03/2009, 10h28

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