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 :

comment executer un script sh en java


Sujet :

Langage Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Par défaut comment executer un script sh en java
    salut,

    quelqu'un sait comment exécuter un script shell sh dans un programme java, je suis entraine de faire un programme test mais cela ne marche pas pour l'instant, est ce que quelqu'un peut m'aider?
    voila mon programme test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    import java.io.IOException;
     
     
    public class test {
    public test(){
     
    }
    public void lancerDEmoShell(String nomShell) throws IOException {
     
    Runtime runtime = Runtime.getRuntime();
    Process proc = runtime.exec("sh"+""+nomShell);
    }
    public static void main(String[] args) throws IOException {
        test t = new test();
       t.lancerDEmoShell("/cygdrive/c/dossier/monscript.sh");
    }
    }
    merci pour votre aider

  2. #2
    Membre chevronné
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Par défaut
    Peut-être Runtime.exec ?

  3. #3
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Citation Envoyé par Isythiel Voir le message
    Peut-être Runtime.exec ?
    Et plus particulièrement la partie V. Runtime.exec() n'est pas un shell
    Bonne lecture .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Par défaut
    j'ai lit le document mais j'ai pas beaucoup avancé, j'ai même commencé à avoir des doutes si je peux appeler un script sh dans un programme java?
    si quelqu'un peut me répondre clairement et excuser mon niveau.
    est ce que je peux appeler un script sh dans un programme java, si oui comment dois je faire pour faire marcher le petit exemple que j'ai posté avant.

    aidez moi svp

  5. #5
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    je crois que tout est très bien expliqué dans l'article

    sinon voici un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class TestShell {
        public static void main(String[] args) {
            String[] cmd = { "/bin/sh", "script.sh" };
            try {
                Process p = Runtime.getRuntime().exec(cmd);
                p.getOutputStream().close();
                p.getInputStream().close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    et le script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #/bin/sh
    ls > fichier.txt

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Par défaut
    merci, j'ai utilisé ton exemple avec mon script mais j'ai cette erreur


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class test {
    public static void main(String[] args) {
            String[] cmd = { "/bin/sh", "/cygdrive/c/ConfAirSync/script.sh" };
            try {
                Process p = Runtime.getRuntime().exec(cmd);
                p.getOutputStream().close();
                p.getInputStream().close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
     
     
     
    }
    java.io.IOException: CreateProcess: \bin\sh /cygdrive/c/ConfAirSync/script.sh error=3
    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:451)
    at java.lang.Runtime.exec(Runtime.java:591)
    at java.lang.Runtime.exec(Runtime.java:464)
    at thread.cool.main(cool.java:16)

  7. #7
    Membre chevronné
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Par défaut
    Tu es sous windows ou linux ?
    Ca peut venir de /bin/sh qui se lance normalement sur linux, mais si tu passes par cygwin ça peut être différent.

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    je ne suis pas sur que /bin/sh soit correct sous windows. Il n'y a pas de /bin sous windows, il n'y a que des application de la forme c:\..... d:\..... etc. Donc, pointe sur le bon shell.


    Tu dois mettre une chemin vers un application correcte pour ton os.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Par défaut
    enfait j'ai un Windows XP avec Cygwin et mon script fonctionne

  10. #10
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    qu'est-ce que tu mets dans ton script au début, à la place de "#/bin/sh" ??

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Par défaut
    c'est la première ligne dans mon script #!/bin/sh

  12. #12
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    et si tu essayais de remplacer le "/bin/sh" ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] cmd = { "/bin/sh", "/cygdrive/c/ConfAirSync/script.sh" };
    par le chemin complet de l'exécutable de sh ou bash, parce que vu l'erreur qu'il te donne
    java.io.IOException: CreateProcess: \bin\sh /cygdrive/c/ConfAirSync/script.sh error=3
    on dirait qu'il cherche le fichier "\bin\sh", qui, je crois, n'existe pas

  13. #13
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    vu qu'il n'y a pas de référence à une lettre de lecteur, je doute effectivement de la fiabilité de ce chemin

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Par défaut
    Bonjour,
    j'ai donné le chemin complet, mais rien à faire toujours le même erreur
    java.io.IOException: CreateProcess: \cygdrive\c\cygwin\bin\sh /cygdrive/c/ConfAirSync/script.sh error=3
    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:451)
    at java.lang.Runtime.exec(Runtime.java:591)
    at java.lang.Runtime.exec(Runtime.java:464)
    at thread.cool.main(cool.java:16)
    voici ma classe avec le chemin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class test {
    public static void main(String[] args) {
            String[] cmd = { "/cygdrive/c/cygwin/bin/sh", "/cygdrive/c/ConfAirSync/script.sh" };
            try {
                Process p = Runtime.getRuntime().exec(cmd);
                p.getOutputStream().close();
                p.getInputStream().close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
     
     
     
    }
    je ne sais vraiment pas quoi faire, aidez moi svp!

  15. #15
    Membre chevronné
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Par défaut
    Il est dit : " You need to specify the path to sh.exe in Windows style (or put sh in
    c:\bin\sh.exe) " Ici

  16. #16
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    oui, il manque le .exe dans le nom de ton programme

  17. #17
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 696
    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 696
    Par défaut
    j'ai donné le chemin complet, mais rien à faire toujours le même erreur
    Le problème c'est que tu donne un chemin à la UNIX alors que tu est sous Windows. Cygwin te permet d'utiliser sous windows un environnement de type UNIX, mais ce n'est pas le cas de Java qui s'attend a traiter ces fichier à la Windows.

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Par défaut
    d'accord mais quand je donne le chemin, à la windows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     cmd = { "C:\cygwin\bin/sh.exe", "/cygdrive/c/ConfAirSync/script.sh" };
    j'ai une message d'erreur
    illegal escape character
    , du coup je suis obligé de le spécifier en format cygwin

  19. #19
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par glasgow Voir le message
    d'accord mais que j'ai donne le chemin à la windows j'ai une message d'erreur , du coup je suis obligé de le spécifier en format cygwin
    En Java le caractère "\" est utilisé pour échapper les caractères spéciaux, d'où le message d'erreur car le caractère spécial "\c" n'existe pas...
    Pour insérer un "\" dans une chaîne de caractères il faut taper "\\" dans le code.

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Par défaut
    j'ai testé ce syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd = { "C:\\cygwin\bin\\sh.exe", "C:\\ConfAirSync\\script.sh" };
    pui celui la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd = { "C:\\cygwin\bin/sh.exe", "C:\\ConfAirSync/script.sh" };
    , mais toujours la même erreur
    java.io.IOException: CreateProcess: C:\cygwinin\sh.exe C:\ConfAirSync\script.sh error=123
    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:451)
    at java.lang.Runtime.exec(Runtime.java:591)
    at java.lang.Runtime.exec(Runtime.java:464)
    at thread.cool.main(cool.java:16)
    cependant je n'ai pas pu testé cette écriture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd = { "C:\\cygwin\bin\sh.exe", "C:\\ConfAirSync\script.sh" };
    à cause de cette erreur
    illegal escape character

    je voudrais quand même remercier tout ceux qui m'ont répondu, si quelqu'un à une nouvelle idée je suis prenant si non je vais continuer la recherche de mon coté. merci encore, les développeurs de developpez.net

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. comment executer ce script ?
    Par Oli_Ifre dans le forum Langage
    Réponses: 4
    Dernier message: 05/04/2007, 13h46
  2. Comment executer un script perl dans un script javascript ?
    Par Hamdi Hedhili dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 01/11/2006, 17h09
  3. Comment executer un script shell en javascript ?
    Par bross dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/04/2006, 16h57
  4. comment executer un script perl svp?
    Par nico72 dans le forum Langage
    Réponses: 8
    Dernier message: 13/07/2005, 09h51
  5. [DEBUTANT]Comment executer un script sql
    Par peaceinpal dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/03/2004, 08h44

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