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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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
    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
    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
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    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 confirmé
    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
    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
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    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 confirmé
    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
    Par défaut
    ben lorsque j’exécute la méthode system exit, le processus enfant disparaît aussi...

+ 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