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 des commandes dans une console depuis un programme Java


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Exécuter des commandes dans une console depuis un programme Java
    Bonjour à tous,

    Je fais un programme qui doit lancer un exécutable.
    Pour cela je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    try {
    	Runtime.getRuntime().exec("C:/Program Files/MonProg/monProgramme.exe");
    } catch (IOException ioe) {
    }
    Cet executable "monProgramme.exe" va chercher des infos dans un fichier "monProgramme.ini" qui est dans le même répertoire que lui.
    Le problème c'est que "monProgramme.exe" est lancé par la machine virtuelle Java depuis le répertoire courant (là où se trouve mon .jar)
    et non depuis son propre répertoire. Il ne trouve donc pas son fichier "monProgramme.ini" qui de plus ne peut être passé en paramètre.
    Est-il possible de forcer l'OS à changer de répertoire avant de lancer un executable de cette manière ?
    Je voudrais bien sur éviter à l'utilisateur de créer un .bat comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cd C:/Program Files/MonProg/
    monProgramme.exe
    Difficulté supplémentaire, je souhaiterai garder la portabilité sur linux.
    Merci à tous

  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,



    Utilises la méthode exec(String[], String[], File), ou mieux la classe ProcessBuilder si tu es sous Java 5 ou plus...

    Attention aussi à bien gérer les flux d'E/S du process.

    a++

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Un grand merci à toi. C'est incroyable le nombre d'API ! On fini toujours par apprendre un jour que ce qu'on a mis tant de temps à coder existait déjà en Java.

    Pour ceux que ça intéresse, voici un résumé de la mise en œuvre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ProcessBuilder pb = new ProcessBuilder("monProgramme.exe");
    pb.directory(new File("C:/Program Files/MonProg/"));
    pb.start();
    Merci encore.

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

Discussions similaires

  1. [XI] Inserer des données dans une Table depuis CRXI
    Par jouberts dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 10/07/2007, 09h21
  2. Insérer des données dans une BD depuis un fichier .bat
    Par kurkaine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/11/2006, 08h31
  3. Réponses: 5
    Dernier message: 07/06/2006, 12h11
  4. Entrer des commandes dans une CMD
    Par narsi1 dans le forum C++
    Réponses: 16
    Dernier message: 03/03/2005, 15h10

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