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 :

[Process] éxecution d'une commande système


Sujet :

API standards et tierces Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Points : 82
    Points
    82
    Par défaut [Process] éxecution d'une commande système
    salut,
    J'ai une appli sous UNIX qui ouvre des pages html via Mozilla avec n Process :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String command = "mozilla /users/[...]/fich.htm";
    Process process = Runtime.getRuntime().exec(command);
    Mon problème est que quand j'ouvre une page html, cela bloque mon appli et je suis obligé de fermer mozilla pour avoir la main sur mon appli.
    Je n'ai pas ce problème quand j'utilise IE sous Windows...

  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,

    Tu ne ferais pas un waitFor() par hasard ?

    a++

    [edit] Si c'est pour ouvrir un fichier en local, il serait peut-être interressant d'utiliser JDIC, avec Desktop.open() ou Desktop.browse()...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 56
    Points : 59
    Points
    59
    Par défaut
    Peut-être en ajoutant une "&" après ta commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String command = "mozilla /users/[...]/fich.htm &";
    Process process = Runtime.getRuntime().exec(command);
    Sinon, tu devrais peut-être créer un thread ?

    @+

    ToCToF

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Points : 82
    Points
    82
    Par défaut
    ba non. J'arrive a garder la main sous Windows. Voici le code complet que j'utilise :

    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
    public static void executeCommand(String command) throws SystemException{
     try {
    Process process = Runtime.getRuntime().exec(command);
    BufferedReader stderr = new BufferedReader(new InputStreamReader(new BufferedInputStream(process.getErrorStream())));
    StringBuffer err = new StringBuffer();
    String temp = "";
    while ((temp = stderr.readLine())!=null) {
    	err.append(temp + "\n");
    }
    stderr.close();
    if (err.length() > 0){
    	throw new SystemException(err.toString());
    }
    } catch (IOException e) {
    	throw new SystemException(e.getMessage());
    }
    }

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Points : 82
    Points
    82
    Par défaut
    j'ai essayé avec le & mais mozilla me lance une erreur (du style fichier inconnu) car le & est considéré comme faisant partie du nom du fichier.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Points : 82
    Points
    82
    Par défaut
    quand a JDIC, j'avais déjà regardé (déja, un peu galère a installer...). Et puis je n'ouvre pas uniquement des pages html. J'ai quelque fois besoin d'ouvrie un éditeur texte. Et dans ce cas, ca fait pareil quand l'éditeur s'ouvre, je n'ai plus la main sur mon appli. Ce que je ne comprend pas, c'est que sous Windows, je garde toujours la main...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 56
    Points : 59
    Points
    59
    Par défaut
    Pour une fois que windows fait mieux qu'UNIX...

    T'as essayé de faire un thread ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Points : 82
    Points
    82
    Par défaut
    je vais voir du coté des thread si c'est la seule solution...

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

    Cela bloque car tu lis le flux d'erreur. Or le readLine() ne renvoit null que si le flux est fermé, et les flux d'E/S ne sont fermé qu'à la fermeture de l'application...
    Donc soit tu ignores le flux d'erreur, soit tu le lis dans un thread...

    Par contre je suis surpris que tu n'ai pas le même probleme sous Windows... Quel commande tu utilises exactement car je viens d'essayer et j'ai le même "problème"...

    a++

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Points : 82
    Points
    82
    Par défaut
    oui tu as raison. Je viens de faire des tests. En fait, ca bloque sous windows quand j'éxécute la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    notepad chemin_fichier_texte
    mais pas quand j'utilise IE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    explorer chemin_fichier_html
    Je crois que je vais enlever le flux d'erreur.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Points : 82
    Points
    82
    Par défaut
    j'ai enlevé le flux d'erreur et ca marche très bien. Tant pis, je ne gérerai pas les erreurs, c'est pas très grave. En tou cas merci bcp...

  12. #12
    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
    Citation Envoyé par alex'l
    mais pas quand j'utilise IE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    explorer chemin_fichier_html
    Tu n'utilises pas IE (processus iexploree.exe) mais l'explorateur (explorer.exe).

    Mais ca marche car les deux process sont très liée. Si les paramètres de l'explorateur ne correspondent pas à un répertoire, il lance IE et se termine. Donc le processus que tu lances est bien fermé (explorer), mais il a lui même lancé un autre processus (iexplorer).

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Points : 82
    Points
    82
    Par défaut
    ok, merci pour l'info...

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

Discussions similaires

  1. [Process] éxecution d'une commande
    Par alex'l dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 03/11/2008, 23h14
  2. lancer une commande système avec jbuilder
    Par xs_nady dans le forum JBuilder
    Réponses: 1
    Dernier message: 28/03/2006, 04h54
  3. Lancer une commande système avec VC++
    Par xs_nady dans le forum MFC
    Réponses: 1
    Dernier message: 17/03/2006, 14h03
  4. Réponses: 2
    Dernier message: 02/01/2006, 10h39
  5. exécuter une commande système à partir de sqlplus?
    Par c_moi_c_moi dans le forum Oracle
    Réponses: 24
    Dernier message: 08/11/2005, 15h11

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