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

API standards et tierces Java Discussion :

[Runtime] probleme avec l'execution d'un programme externe


Sujet :

API standards et tierces Java

  1. #1
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut [Runtime] probleme avec l'execution d'un programme externe
    Bonjour,
    j'ai un petit problème avec l'éxécution d'un programme externe.
    voila je lance mon programme d'une facon standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec(......);
    Je veux que lorsque je quitte mon applet java que le programme tourne encore!
    Sous Windows aucun problème ca le fait d'office, en revanche sous linux lorsque je ferme mon applet mon application ce ferme aussi !
    quelqu'un sait il pourquoi!

    ( Java -> on dit cross platform je commence a ne plus y croire ! mais à croire ce que je vois! )

  2. #2
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Essayes de mettre un & à la fin de la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec("ton_process &")

  3. #3
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    Non j'ai deja essayé ca mais ca ne marche pas !

  4. #4
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Et en passant par un script shell intermédiaire ?
    Citation Envoyé par script.sh
    ton_appli &
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec("script.sh")

  5. #5
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    desolé ca revient au meme !

  6. #6
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Tu dois avoir un problème qui vient d'ailleurs. Chez moi, ce bout de code
    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
    import java.io.*;
     
    public class Test 
    {
    	public static void main(String args[])
    	{
    		try 
    		{
    			Runtime.getRuntime().exec("tuxguitar");
    		}
    		catch(IOException e)
    		{
    			e.printStackTrace();
    		}
    		System.exit(0);
    	}
    }
    me lance correctement tuxguitar et se ferme en laissant tuxguitar ouvert.

  7. #7
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Tu essayes d'exécuter une application console ou fenêtrée ? Car je n'ai pas le même comportement dans les 2 cas...

  8. #8
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    Non c'est une application "fenetré" en fait j'ai 2 comportement le 1er j'affiche ma fenetre grace a une fonction en c++, si je quitte l'applet alors le programme ce quitte et si la fenetre n'est pas affiché alors le programme ne ce quitte pas mais devient inutilisable !

  9. #9
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Tu veux dire que tu utilises JNI ? Montres un peu de code stp

  10. #10
    Membre actif Avatar de hydraland
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 239
    Points
    239
    Par défaut
    Salut,

    Citation Envoyé par Jérémy Lefevre
    ( Java -> on dit cross platform je commence a ne plus y croire ! mais à croire ce que je vois! )
    C'est sùr quand faisant du JNI et l'appel à des processus externes tu perd la portabilité .

    Sinon pour ton problème essaye de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec("/usr/bin/nohup MaCommande &");
    A+
    Hydraland

  11. #11
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    ok alors mon programme externe n'est rien d'autre qu'un programme ecrit en c++ qui inclut un server qui ecoute sur le port 53419,
    je veux que lorsque je lance mon applet celle ci telecharge le binaire le place sur le disque local et l'execute.
    jusque la tout va bien .... mais j'aimerai que lorsque je quite mon applet , que l'application externe ecoute continue a tourner! ce qui marche très bien sous windows mais pas sous Linux !

    voici mon code qui me permet de lancer mon application :
    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
    public void execFile(String user, String pass, String callnumber, String server)
        {
            try
            {
                if(!this.usePort(53419))
                {
                    Runtime.getRuntime().exec(this._urlDest);
                }
                else
                    System.out.println("Port already used! just send the request");
                URL requete=new URL("http://127.0.0.1:53419/.......");
                this.postURL(requete,"");
            }
            catch(IOException e) {System.out.println("enter2");}
        }
    de plus lorsque j'execute mon programme externe dans un console tout ce passe très bien!!

  12. #12
    Membre actif Avatar de hydraland
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 239
    Points
    239
    Par défaut
    As tu mis le nohup?
    Peut tu nous montrer la valeur de A+
    Hydraland

  13. #13
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    oui j'ai essayer le nohup mais ca ne change rien !
    voila le contenu de this._urlDest :
    nohup /home/MonLogin/.monAppli/webserver &

  14. #14
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    Ok alors j'ai du nouveau,
    alors en fait je n'attire pas a détacher complètement mon application de ma console meme en mettant un nohup et un & ! je pense que le problème viens de la!
    lorsque je ferme moin applet c'est comme si je fermais ma console et la le programme ne fonctionne plus !
    ceci est du a une librairie que j'utilise ( iaxclient ) ! n'y a t'il pas moyen de detacher complètement le programme de la console !

  15. #15
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    C'est ce que je disais : en exécutant une application console ou une application fenêtrée je n'ai pas le même comportement. Une application fenêtrée se lance sans problème; en revanche, une application console s'arrête en même temps que mon programme Java.
    Je pense que c'est du à la gestion des processus sous *n*x qui est différente de celle sous windows. Le process lancé par Runtime.getRuntime().exec() doit avoir pour processus parent celui de la JVM, et quand celle-ci se ferme, le processus lancé se termine également.

    Je ne sais pas comment on peut "détacher un processus du processus console", mais si tu trouves la solution ça m'intéresse.

  16. #16
    Membre actif Avatar de hydraland
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 239
    Points
    239
    Par défaut
    La commande nohup crèe un fichier nohup.out. Est ce qu'il contient quelque chose?

    Hydraland

  17. #17
    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,


    Le & n'est pas géré par Runtime.exec() mais par le shell système. Essayes donc de passer par lui pour lancer la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Process p = Runtime.getRuntime().exec( new String[] {
    	"/bin/sh",
    	"/usr/bin/nohup MaCommande &"
    });

    Et fermes toujours tous les flux si tu ne les utilises pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    p.getOutputStream().close();
    p.getInputStream().close();
    p.getErrorStream().close();
    Par contre je ne sais pas si cela suffira à résoudre ton problème...

    a++

  18. #18
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    oui hydraland il contient quelque chose :
    warning : the VAD has been replaced by a hack pending a complete rewrite

    j'ai essayer ta metode adiGuba mais malheureusement ca ne change rien !

  19. #19
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    Citation Envoyé par muad'dib
    Je ne sais pas comment on peut "détacher un processus du processus console", mais si tu trouves la solution ça m'intéresse.
    Alors j'ai enfin trouvé une solution a mon problème qui relevait plus d'un problème système que d'un problème de java!
    l'idée est tout simplement de faire un deamon et le lancer ! Pour ceux qui veulent le code pour faire un deamon contacter moi et ecrivé un message dans la bonne section ...

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

Discussions similaires

  1. [Runtime] Probleme avec le caractere etoile
    Par bioneron dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 20/08/2008, 11h05
  2. probleme avec l'execution
    Par soujava dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 17/05/2008, 11h19
  3. probleme avec l'executable
    Par dex_tritus dans le forum Visual Studio
    Réponses: 4
    Dernier message: 29/06/2007, 13h54
  4. Probleme avec l'execution d'un programme ext
    Par Jérémy Lefevre dans le forum Langage
    Réponses: 1
    Dernier message: 14/06/2007, 14h23
  5. Probleme avec mon execution
    Par keitamoustapha dans le forum C++
    Réponses: 3
    Dernier message: 02/11/2006, 16h43

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