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 :

java commande winaudit


Sujet :

Langage Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Par défaut java commande winaudit
    bonjour,
    je cherche à executer winaudit à partir de java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ProcessBuilder("d:/test/winaudit_winaudit_2.27_francais_20022", "myArg").start();
    ça, ça marche ; winaudit se lance...

    voila le probleme : quand j ajoute des arguments (deux "propriétés" et enregistrement), ça ne fonctionne plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ProcessBuilder("d:/test/winaudit_winaudit_2.27_francais_20022  /r=go /f=d:/test", "myArg").start();
    voila mon erreur :

    java.io.IOException: Cannot run program "d:/test/winaudit_winaudit_2.27_francais_20022 /r=go /f=d:/test": CreateProcess error=123, Syntaxe du nom de fichier, de répertoire ou de volume incorrecte
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
    at cubetest.ui.TestWinaudit.main(TestWinaudit.java:22)
    Caused by: java.io.IOException: CreateProcess error=123, Syntaxe du nom de fichier, de répertoire ou de volume incorrecte
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
    at java.lang.ProcessImpl.start(ProcessImpl.java:30)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
    ... 1 more
    ps : cette commande fonctionne dans l invite de commande

    merci pour vos eventuelles reponses

    simon

  2. #2
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Par défaut
    Bonjour,

    As-tu jeté un oeil à la javadoc de ProcessBuilder ?
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire, dont l'utilité et la qualité dépendent du soin apporté à nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Par défaut
    bonjour,
    je viens de regarger la javadoc (désolé j ai pas forcément le reflex)
    et j ai cru comprendre qu il fallait passer les arguments de la manière suivante (?) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ProcessBuilder pb = new ProcessBuilder("d:/test/winaudit");
    Map<String, String> env = pb.environment();
    env.put("r", "g");
    pb.start();
    Seulement voilà : winaudit se lance mais sans plus... pas d'audit, pas de sauvegarde...
    Les arguments sont definis mais ne sont pas "appliqués", non?

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


    Ici tu ne passes pas d'argument mais des variables d'environnements...

    Tu avais mis un exemple d'argument dans le code que tu as posté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ProcessBuilder("d:/test/winaudit_winaudit_2.27_francais_20022", "/r=go",  "/f=d:/test").start();
    a++

    PS : Attention à bien lire/fermer les flux d'entrée/sortie...

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Par défaut
    salut,
    merci pour ta réponse. j avais testé cela aussi, mais je viens de me rendre compte que le fichier (résultant) n était pas enregistré à l'endroit où je voulais et c'est pour ça que je croyais que ça ne fonctionnait pas correctement...

    voilà ce que je faisait :
    ProcessBuilder pb = new ProcessBuilder(cmd, "/r=go", "/f=d:/test");

    alors qu'il faut faire :
    ProcessBuilder pb = new ProcessBuilder(cmd, "/r=go", "/f=d:\\test");

    Le chemin de sauvegarde ne prend pas le caractère / en compte, mais seulement \\ (à la différence du chemin de winaudit, d'où les difficultés rencontrées...)

    bref, merci beaucoup de ton aide

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Par défaut
    petite question supplémentaire :
    à quoi sert la lecture et la fermeture des flux?
    est ce obligatoire?

  7. #7
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    En gros une application peux envoyer et recevoir des informations via les flux standard. Classiquement il s'agit de messages d'avancement, de débuggage ou d'erreur à afficher sur la console. Le problème c'est que ci ces flux ne sont pas lus par l'application java(ou fermés), l'application lancé risque de se bloquer en attendant que Java les lise.

    Donc si ton application n'envoie aucun message sur les flux ce n'est pas obligatoire. Mais dans la pratique, il vaut mieux les fermer(ou les lire) pour éviter les mauvaises surprises.

  8. #8
    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
    Citation Envoyé par simonphenix Voir le message
    à quoi sert la lecture et la fermeture des flux?
    A communiquer (lire/ecrire) avec le programme via les entrées/sorties standard (ce qui apparait généralement dans la console.

    Citation Envoyé par simonphenix Voir le message
    est ce obligatoire?
    Si tu ne les utilises pas il faut les fermer immédiatement, sous peine de problème potentiel d'interblocage...

    a++

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Par défaut
    Encore merci pour vos réponses; je m'en vais de ce pas fermer ces flux

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Par défaut
    bonjour,
    je me trouve maintenant confronté à un nouveau probleme :
    une fois l audit effectué, le résultat est enregistré dans un fichier txt.
    seulement après cet audit, je ceux zipper ce fichier texte, mais je ne sais pas comment faire pour attendre que l enregistrement de ce fichier soit fait pour lancer ma fonction "zip"...

    merci pour vos réponses :-)

  11. #11
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Tu peux attendre la fin du programme via monProcess.waitFor();

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Par défaut
    heu non je crois que ce n est pas possible, car ce sont deux fonctions d'une meme classe que j utilise dans une autre classe...

  13. #13
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Je ne comprends pas très bien ce que tu essaies d'expliquer. Pourrais tu détailler ou donner ton code?

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Par défaut
    au temps pour moi : le waitfor() marche !

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

Discussions similaires

  1. [Système]commandes linux / unix depuis java
    Par msiramy dans le forum API standards et tierces
    Réponses: 12
    Dernier message: 20/03/2007, 11h29
  2. Invite de commandes windows et Unicode Java
    Par guipom dans le forum Windows
    Réponses: 6
    Dernier message: 08/03/2006, 18h21
  3. Problème sur la commande COPY depuis un programme Java
    Par klereth dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 10/02/2006, 14h14
  4. [débutant]lancement d'une commande Unix ou LInux depuis Java
    Par msiramy dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 30/09/2005, 18h10
  5. [débutant][Classpath] Commande java inconnue
    Par Regis.C dans le forum Général Java
    Réponses: 4
    Dernier message: 03/08/2004, 11h12

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