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


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Par défaut [Process] éxecution d'une commande
    Bonjour,
    J'utilise java pour éxecuter des commandes Clearcase du style :

    String cmd = "lsvob"
    Process cleartool = Runtime.getRuntime().exec("cleartool " + cmd);

    Or, il y a une de ces commandes que je suis obligé d'éxecuter dans un répertoire défini par l'utilisateur (exemple : D:\my_dir). J'ai essayé ca :

    String[] cmds = {"D:","cd my_dir","cleartool lsvob"};
    Process test = Runtime.getRuntime().exec(cmds);

    mais ca ne marche pas...
    Quelqu'un aurait une autre solution?
    merci.

  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,

    Il suffit d'utiliser la méthode ,%20java.io.File)]exec() avec le répertoire de travail en paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process test = Runtime.getRuntime().exec("cleartool lsvob", null, new File("my_dir") );
    a++

    Ps : penses à utiliser les balises [ code ] c'est plus lisible

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Par défaut
    désolé mais ca marche pas, il me sort une erreur.


    Par exemple, ici avec la commande ls (il me sort les même erreur avec les commandes cleartool).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    cmd = "ls";
    try {
    Process test = Runtime.getRuntime().exec(cmd,null,new File("D:\test2"));
    } catch (IOException e) {
    e.printStackTrace();
    }
    erreur :

    java.io.IOException: CreateProcess: ls error=267

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Par défaut
    en fait, j'ai compris le problème.
    Mon appli s'execute sur le disque Z:\.

    Ainsi, si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process test = Runtime.getRuntime().exec("ls",null,new File("Z:\\"));
    ca passe. mais pas si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process test = Runtime.getRuntime().exec("ls",null,new File("D:\\"));
    Donc ca marchera tres bien sous unix mais sous windows, je vois pas comment faire...

  5. #5
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    heuu .. moi j'aime bien les questions simples et les réponses simples .....

    Et si tu modifiait temporairement ton PATH que tu récupère de System (EDIT: en y apposant le chemin où est stocké ton cleartool)et qu'ensuite tu exécute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process cleartool = Runtime.getRuntime().exec("D:\\my_dir\\cleartool lsvob");


    ça marche pas ça ?????

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Par défaut
    Non, j'avais déjà essayé. Il me retourne logiquement l'erreur suivante :

    'D:\test\cleartool' is not recognized as an internal or external command,
    operable program or batch file.

  7. #7
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    normal .. si ton le chemin de ton appli n'est pas dans le path ..... mais si tu le modifie ? ....

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Par défaut
    tu veux dire le répertoire d'install du exe cleartool? ba si, il est dans le path...

  9. #9
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    pppfui .. je sais plu là ...

    Mais je me faisais 1 réflexion ... C,D,Z ... ce sont des lecteurs ... et normalement sous Unix, tu n'as pas de lecteur (il me semble) ...

    Alors pourquoi utiliser "ls" plutôt que "dir" ?
    tu travaille sous Linux ? Dans ce cas, je n'ai jamais testé mais ça ne viendrai pas de là et ma remarque serait à mettre de côté ....

  10. #10
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    ça signifie que cleartool n'existe pas dans le répertoire D:\my_dir.

    En mode console, que retourne la commande "dir D:\my_dir\cleartool"?

  11. #11
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    et si il est dans le path jowo .. tu peux l'exécuter depuis n'importe quel répertoire, nan ?

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Par défaut
    bon, je vais essayé d'etre plus clair. Oui, cleartool est dans le path donc je peux l'éxecuter de n'importe où. Mais la commande cleartool possède plusieurs arguments comme par exemple :

    cleartool ci (faire un check-in)
    cleartool lsview (liste des espaces de travail).
    [...]


    mais il y a une commande :
    cleartool setcs "C:\fichier_texte" qui permet d'associer un config-spec à un espace de travail. (un config-spec permet de sélectionner les éléments visible et la version de ces éléments dans l'espace de travail).

    Cette commande doit obligatoirement être éxecuter dans le répertoire contenant l'espace de travail (j'avoue, c'est un peu con mais c'est comme ca).

    Donc, j'ai utilisé la commande java :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process cleartool = Runtime.getRuntime().exec("cleartool setcs C:\fichier_texte",null,"chemin_de_l'espace_de_travail")
    Sous Unix, en effet, pas de problème. Mais sous Windows, si mon appli s'éxecute sur le disque Z: et que le chemin_de_l'espace_de_travail correspond au disque D: par exemple alors ca plante. Je ne sais pas pourquoi... Par contre si mon appli s'execute sur D: alors ca marche...

  13. #13
    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 alex'l
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process cleartool = Runtime.getRuntime().exec("cleartool setcs C:\fichier_texte",null,"chemin_de_l'espace_de_travail")
    Deux remarques :
    • 1 - On dirait que tu as désactivé le BBCode dans ton profil, réactive le...
      2 - Je pense que tu voulais dire new File("chemin_de_l'espace_de_travail") ?


    Citation Envoyé par alex'l
    Mais sous Windows, si mon appli s'éxecute sur le disque Z: et que le chemin_de_l'espace_de_travail correspond au disque D: par exemple alors ca plante. Je ne sais pas pourquoi...
    Qu'est-ce que ca fait pour planter ?
    • Tu as une exception ?
      Quel est le programme qui plante : ton appli Java ou cleartool ?
      As-tu un message d'erreur ?


    a++

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Par défaut
    en essayant de répondre à ce post, j'ai trouvé la solution (enfin, pas vraiment mais ca ne concerne plus ce forum) car l'erreur vient de Clearcase.
    désolé en fait, la méthode exec marche très bien...[/code]

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Par défaut
    Salut (4 ans plus tard :p )

    super ce poste, j'ai le même problème pour une autre commande qui doit absolument s'exécuter dans un dossier choisit arbitrairement...

    Je testerai la méthode en spécifiant un espace de travail comme expliqué dans cette discussion.

    Ciao

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 25/01/2013, 11h30
  2. Retrouver les pid des process fils d'une commande.
    Par PauseKawa dans le forum Général Python
    Réponses: 2
    Dernier message: 06/09/2009, 15h53
  3. Réponses: 1
    Dernier message: 30/04/2008, 21h27
  4. Runtime/Process : pb exécution d'une commande
    Par Didier 69 dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 05/01/2007, 08h50
  5. [Process] éxecution d'une commande système
    Par alex'l dans le forum API standards et tierces
    Réponses: 12
    Dernier message: 13/09/2005, 17h29

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