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

Entrée/Sortie Java Discussion :

lancer un script avec la classe java shell de adiguba avec FileOutputStream


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club Avatar de trin86
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 171
    Points : 63
    Points
    63
    Par défaut lancer un script avec la classe java shell de adiguba avec FileOutputStream
    Bonjour à tous,

    Je cherche à lancer des script linux dans cygwin à partir d'un programme java.
    J'ai utilisé la classe shell pour lancer par exemple une commande "ls" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Shell sh = new Shell();
    File dir= new File("F:\\tinyos\\cygwin");
    sh.setDirectory(dir);
    String cmd="echo ls | cygwin";
    try{sh.exec(cmd).output(new FileOutputStream("out.txt")).consumeInBackground();}					catch(IOException es){}
    Quand je vérifie le fichier out.txt dans mon workspace si la commande a fonctionné, je trouve le fichier vide

    Et j'ai essayé aussi la commande touch fich.txt mais le fichier ne se crée pas

    Comment savoir que ma commande fonctionne, et comment fire pour qu'elle fonctionne.

    Merci d'avance
    Cherchez le savoir jusqu'en Chine !

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    cygwin n'est pas un émulateur linux et tinyos est un système d'exploitation.

    De plus, cette discussion semble évidemment faire suite à une discussion déjà existante.

    Pas de multiposts par pitié.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Membre du Club Avatar de trin86
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 171
    Points : 63
    Points
    63
    Par défaut
    Bonjour,

    Il y a eu des discussions similaires que j'ai lu mais qui ne parlent pas du même problème et merci je sais ce que c'est cygwin et tinyos ça fait 1 mois que j'étudie ça et je suis toujours bloquée.

    Svp aidez moi.
    Cherchez le savoir jusqu'en Chine !

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

    Quelques remarques/conseils :
    • Affiches l'exception ! Les blocs catch vide devraient être interdit !!!!
    • Utilises consume() à la place de consumeInBackground(), ou utilise get() sur ce dernier pour bien attendre la fin du process...
    • Récupère et affiche le code de retour renvoyé par consume() ou get(). En général les programmes renvoient 0 lorsque tout s'est bien passé...
    • Essayes de tester avec une commande simple ("dir" par exemple).
    • As-tu essayé ta commande dans une invite de commande ? Cela fonctionne-t-il ? Cygwin lit bien son entrée standard ?



    a++

  5. #5
    Membre du Club Avatar de trin86
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 171
    Points : 63
    Points
    63
    Par défaut
    Bonjour,

    Tout d'abord merci d'etre présent en cas de problème et merci pour votre travail sur l'API.

    voilà j'ai essayé avec une simple commande dir avec le code précédent en affichant en plus l'exception, et voilà le resultat:

    erreur java.io.IOException: Cannot run program "dir" (in directory "F:\tinyos\cygwin"): CreateProcess error=2, Le fichier spécifié est introuvable.

    Je précise que dans l'instance de shell sh j'ai forcé le repertoire d'execution au repertoire de cygwin.bat
    Cherchez le savoir jusqu'en Chine !

  6. #6
    Membre du Club Avatar de trin86
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 171
    Points : 63
    Points
    63
    Par défaut
    rebonjour,

    J'ai réglé le problème en ecrivant ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Shell sh = new Shell();
    File dir= new File("C:\\WINDOWS\\system32");
    sh.setDirectory(dir);
    System.out.println(sh.toString());
    System.out.println(sh.getDirectory());
    String cmd="echo ls | F:\\tinyos\\cygwin\\cygwin.bat";
    try{sh.command(cmd).output(new FileOutputStream("out.txt")).consume();} 
    catch(IOException es){ System.out.println("erreur "+es.toString());}
    et la commande s'est executé normalement voici le fichier out.txt:
    avarice-2.0.20030825cvs-1w.cygwin.i386.rpm.log
    avr-binutils-2.13.2.1-1w.cygwin.i386.rpm.log
    avr-gcc-3.3tinyos-1w.cygwin.i386.rpm.log
    avr-insight-pre6.0cvs.tinyos-1w.cygwin.i386.rpm.log
    avr-libc-20030512cvs-1w.cygwin.i386.rpm.log
    makecomp.sh
    nesc-1.1-1w.cygwin.i386.rpm.log
    nesc-1.1.1-2.cygwin.i386.rpm
    nesc-1.1.2b-1.cygwin.i386.rpm
    task-tinydb-1.1.0-1.cygwin.noarch.rpm.log
    tinyos-1.1.0-1.cygwin.noarch.rpm.log
    tinyos-1.1.15Dec2005cvs-1.cygwin.noarch.rpm
    tinyos-contrib-1.1.0-1.cygwin.noarch.rpm.log
    tinyos-tools-1.1.0-1.cygwin.i386.rpm.log
    tinyos-vm-1.1.0-1.cygwin.noarch.rpm.log
    et le résulatat dans la console :
    actionPerformed()
    C:\WINDOWS\system32\cmd.exe
    C:\WINDOWS\system32
    ]0;~
    start@mosaique-f127fc ~
    $ ]0;~
    start@mosaique-f127fc ~
    $ ]0;~
    start@mosaique-f127fc ~
    $ logout
    Mais je constate 1 petit soucis: dans la console l'affichage est dans une police bizare
    Comment fare pour que ça soit lisible
    Cherchez le savoir jusqu'en Chine !

  7. #7
    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
    Je n'avais pas fait attention au fait que tu utilisait exec() à la place de command().

    • exec() se contente d'appeler un programme existant avec ses arguments.
    • command() exécute une ligne de commande en utilisant le shell système (ou celui spécifié en paramètre du constructeur).



    Pour ton nouveau problème on dirait qu'il s'agit de caractère d'échappement envoyé par cygwin...

    a++

  8. #8
    Membre du Club Avatar de trin86
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 171
    Points : 63
    Points
    63
    Par défaut
    salut,

    de toute façon l'affichage est bon dans le fichier out.txt.

    Merci beaucoups c trés gentil de m'avoir aidé bonne continuation

    à+
    Cherchez le savoir jusqu'en Chine !

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

Discussions similaires

  1. Exporter le .jar avec les classes .java
    Par womannosky dans le forum NetBeans
    Réponses: 2
    Dernier message: 27/01/2009, 22h27
  2. Lancer un script pl/sql depuis un shell
    Par tipon20 dans le forum Sql*Plus
    Réponses: 4
    Dernier message: 09/12/2008, 14h43
  3. pb d'executer chmod avec ma classe java
    Par rhifay dans le forum Linux
    Réponses: 5
    Dernier message: 25/06/2008, 14h45
  4. Lancer un script depuis un programme Java
    Par loulag07 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 06/05/2008, 14h51
  5. lancer un executable depuis une classe java
    Par k6971 dans le forum Langage
    Réponses: 4
    Dernier message: 21/05/2007, 22h46

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