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 :

[Runtime] Appel à une commande UNIX dans Java


Sujet :

API standards et tierces Java

  1. #1
    Membre régulier

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Points : 100
    Points
    100
    Billets dans le blog
    1
    Par défaut [Runtime] Appel à une commande UNIX dans Java
    bonjour,
    voilà tout est dans le titre, je voudrai faire appel à une commande unix dans mon code java, j'ai trouvé ce lien http://blog.developpez.com/adiguba/p...s-plus-simple/


    j'ai attaché le .jar à mon projet et j'ai teste ce code là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Shell sh = new Shell(); 
    String result = sh.exec("ls | sort").consumeAsString();
    mais ça marche pas, ce qu'il m'affiche comme erreur




    java.io.IOException: java.io.IOException: Aucun fichier ou répertoire de ce type
    at java.lang.PosixProcess.<init>(libgcj.so.8rh)
    at java.lang.VMProcess.nativeExec(libgcj.so.8rh)
    at java.lang.VMProcess.exec(libgcj.so.8rh)
    at java.lang.ProcessBuilder.start(libgcj.so.8rh)
    at com.developpez.adiguba.shell.ProcessConsumer.getProcess(ProcessConsumer.java:471)
    at com.developpez.adiguba.shell.ProcessConsumer.consume(ProcessConsumer.java:486)
    at com.developpez.adiguba.shell.ProcessConsumer.consumeAsString(ProcessConsumer.java:541)
    at p.Premier.main(Premier.java:35)
    Caused by: java.io.IOException: Aucun fichier ou répertoire de ce type
    at java.lang.PosixProcess.nativeSpawn(libgcj.so.8rh)
    at java.lang.PosixProcess.spawn(libgcj.so.8rh)
    at java.lang.PosixProcess$ProcessManager.run(libgcj.so.8rh)



    merci

  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,


    C'est normal : exec() appelle directement un programme sans prendre en compte la syntaxe du shell. Tu appelles donc un seul et unique programme nommé "ls | sort".


    Pour interpréter une ligne de commande via le shell du système, il faut utiliser command() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Shell sh = new Shell(); 
    String result = sh.command("ls | sort").consumeAsString();
    a++

  3. #3
    Membre régulier

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Points : 100
    Points
    100
    Billets dans le blog
    1
    Par défaut
    merci pour ta réponse mais ça marche pas de cette façon, voilà l'erreur:

    java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(libgcj.so.8rh)
    at java.util.AbstractList.add(libgcj.so.8rh)
    at com.developpez.adiguba.shell.Shell.command(Shell.java:272)
    at p.Premier.main(Premier.java:35)

    problème résolu sans le Shell (merci à Uther)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String[] s = { "sh", "-c", "ls >sortie" };
    final Process process = rt.exec(s);
    A+

Discussions similaires

  1. Appeller des commandes unix dans du PL/SQL
    Par stepd dans le forum PL/SQL
    Réponses: 2
    Dernier message: 08/03/2008, 14h52
  2. Appeler une commande nommée dans une variable
    Par kwakanar dans le forum Programmation (La)TeX avancée
    Réponses: 1
    Dernier message: 03/03/2008, 15h29
  3. Réponses: 3
    Dernier message: 19/06/2007, 11h27
  4. Réponses: 22
    Dernier message: 09/12/2005, 21h27

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