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 :

Exécuter une application externe à Java


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2008
    Messages : 38
    Par défaut Exécuter une application externe à Java
    Hello,

    Je suis entrain de faire un programme qui me permet d'exécuter une application externe à java, j'ai lu des tutoriaux à se sujet, mais je bloque sur un point. J'aimerai pouvoir écrire le mot de passe quand la ligne de commande me le demande, mais je ne sais pas comment faire.
    Voici mon 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     Runtime runtime = Runtime.getRuntime();
                final Process process = runtime.exec("monappli");
     
    // Consommation de la sortie standard de l'application externe dans un Thread separe
                new Thread() {
     
                    public void run() {
                        try {
                            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                            reader.close();
                        } catch (IOException ioe) {
                            ioe.printStackTrace();
                        }
                    }
                }.start();
     
    // Consommation de la sortie d'erreur de l'application externe dans un Thread separe
                new Thread() {
     
                    public void run() {
                        try {
                            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
                            reader.close();
                        } catch (IOException ioe) {
                            ioe.printStackTrace();
                        }
                    }
                }.start();
     
            } catch (IOException ex) {
                Logger.getLogger(Programme.class.getName()).log(Level.SEVERE, null, ex);
            }
    Merci de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    Voici un extrait de code que j'utilise pour charger un fichier Excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec("cmd /C start excel " + fichier.getAbsolutePath());
    Le parametres sont passés directement.
    Sinon il doit bien exister des libs d'execution externes.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2008
    Messages : 38
    Par défaut
    Le programme que j'utilise n'accepte pas qu'on lui passe le mot de passe directement! C'est pour ça que je dois l'écrire dans la commande

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Ben il faut qu'en plus tu utilises le "process.getOutputStream()" pour envoyer le mot de passe à l'entrée standard du programme.
    Le pb c'est qu'il faut le faire au bon moment, car il y a sans doute une invitation texte qui demande à l'utilisateur d'entrée son mot de passe.
    Donc il faudra n'envoyer des données vers cet outputstream qu'après avoir lu suffisamment de text (correspondant à l'invitation texte) dans le inputstream du process.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2008
    Messages : 38
    Par défaut
    Exactement, il y a une invitation texte.

    Par contre, je ne vois pas comment faire pour savoir quand il fait la demande, pour lui envoyer au bon moment!

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Ben, tant qu'il y a qqchose dans le flux process.getInputStream(), c'est que le programme n'a pas fini d'ecrire l'invitation text.
    Tu peux même reconstituer ce flux en text et le comparer avec le message que tu attend.
    Quand il n'y a plus rien dans process.getInputStream() tu dois pouvoir écrire dans le process.getOutputStream() le mot de passe.

    J'espere que le shell ne demande que le mot de passe sinon, il faudra répéter la phase "lecture de l'inputstream question"/"écriture dans l'outputstream réponse" autant de fois qu'il y a de questions.

    Par rapport à ce que tu as, commence déja par ne plus bufferiser et fermer automatiquement le flux de process.getInputStream().

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Par défaut
    slt a tous ! je cherche comment :

    ecrire un programme qui va crée un fichier, puis le transmettre a une autre application qui va trouver le resultat, puis l'afficher dans une fenetre ! est ce possible ?? svp c important

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 155
    Par défaut
    Alerte double nécropost

    c'est possible.
    Pour créer un fichier, utilise la classe File (puis un writer/outputStream pour écrire dedans).
    Comme tu l'as crée, tu connais son chemin, donc tu peux le passer en paramètre de ton autre application que tu peux lancer avec un exec.

    Voir un tutoriel de développez.com/java pour l'exec.

Discussions similaires

  1. Exécuter une application externe
    Par mawkli dans le forum Langage
    Réponses: 16
    Dernier message: 03/07/2012, 11h55
  2. Exécuter une application externe avec survie après Java
    Par Claythest dans le forum Général Java
    Réponses: 8
    Dernier message: 20/11/2009, 14h23
  3. exécuter une application externe à java
    Par meli82 dans le forum Langage
    Réponses: 8
    Dernier message: 28/07/2009, 11h38
  4. Exécuter une application externe pas à pas
    Par leyo666 dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 07/04/2007, 18h41

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