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

avec Java Discussion :

Rien ne se passe avec exec.


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Rien ne se passe avec exec.
    Bonjour,
    tout est dit dans le titre... rien ne se passe pas meme pas un message d'erreur lorsque j'utilise la commande exec...
    voici mon code
    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
    18
    19
    20
    21
     
    try{
    String ch = jTextField7.getText();
    String s;
    String fin = "\\MARCHE\\IntGraph\\src\\intgraph\\MATLAB Compiler Runtime\\v710\\bin\\win32\\Encoursfin.exe";
    String ch1=ch.substring(0,ch.lastIndexOf("\\"));
    String hellolol=ch1+fin;
    System.out.println(hellolol);
     
    Runtime Run = null;
    Run = Runtime.getRuntime();
    Process Proc= Run.exec(hellolol);
          BufferedReader r1 = new BufferedReader(new InputStreamReader(Proc.getInputStream()));
                 while(( s =r1.readLine()) != null){
               System.out.println(s);
            }
            }
     
    	catch (Exception e){
    			System.out.println(e.toString());
    		}
    Si quelqu'un voit une erreur car la je ne comprends pas...

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    je viens de tester

    copier collé du code je change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String ch = jTextField7.getText();
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String ch = "c:\\lol\\";
    voila le retour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    c:\lol\MARCHE\IntGraph\src\intgraph\MATLAB Compiler Runtime\v710\bin\win32\Encoursfin.exe
    java.io.IOException: Cannot run program "c:\lol\MARCHE\IntGraph\src\intgraph\MATLAB": CreateProcess error=3, Le chemin d'accès spécifié est introuvable
    petit astuce les \\ dans un path ce n'est pas utile utilise des / en plus c'est portable

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 23
    Points
    23
    Par défaut
    petit astuce les \\ dans un path ce n'est pas utile utilise des / en plus c'est portable
    Merci je ne savais pas.

    Si j'ai bien compris il s'arete apres le blanc de MATLAB au lieu d'aller au bout du chemin.
    Comment puis-je faire pour qu'il ne s'arete pas au blanc et qu'il aille chercher le bon prog?

    Merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    test de passé par un object File

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Pour qu'il ne s'arrête pas sur les espaces, encadre ton chemin d'accès par des "

    Correction ! ca ne marche qu'en ligne de commande et pas en exec...
    En fait quand tu mets un String en paramètre, il se sert des espaces pour gérer les différente portion de ta requete... pour éviter ce problème, tu peux donc utiliser ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process Proc= Run.exec(new String[]{hellolol});
    Ici, au lieu d'utiliser les espaces, il utilise les différentes String dispo dans le tableau et du coup ca devrait marcher...
    Chez moi ca à l'air ok :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "main" java.io.IOException: Cannot run program "\MARCHE\IntGraph\src\intgraph\MATLAB Compiler Runtime\v710\bin\win32\Encoursfin.exe": error=2, No such file or directory

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 23
    Points
    23
    Par défaut
    Je ne peux pas faire ca car mon chemin se trouve dans une variable String. J'ai essayé avec un String[] mais cela ne change rien le prog ne se lance pas.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    c'est bien ce que je me suis dit mais ça ne change rien

    par contre si je passe par un File qui représente le dossier cela marche bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            try {
                String s;
                File f = new File("C:/MATLAB Compiler Runtime/v710/bin/win32/Encoursfin.exe");
                Runtime Run = null;
                Run = Runtime.getRuntime();
                Process Proc = Run.exec(f.getName(),null,f.getParentFile());
            } catch (Exception e) {
                System.out.println(e.toString());
            }

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 23
    Points
    23
    Par défaut
    mouarf pour moi ca marche tjs pas...

    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
    18
    19
    20
    21
    22
    23
     try{
    String ch = jTextField7.getText();
    String s;
    String fin = "\\MARCHE\\IntGraph\\src\\intgraph\\MATLAB Compiler Runtime\\v710\\bin\\win32\\Encoursfin.exe";
    String ch1=ch.substring(0,ch.lastIndexOf("\\"));
    String hellolol=ch1+fin;
    File f = new File(hellolol);
    System.out.println(hellolol);
    Runtime Run = null;
    Run = Runtime.getRuntime();
    Process Proc= Run.exec(f.getName(),null,f.getParentFile());
          BufferedReader r1 = new BufferedReader(new InputStreamReader(Proc.getInputStream()));
                 while(( s =r1.readLine()) != null){
               System.out.println(s);
            }
            }
     
    	catch (Exception e){
    			System.out.println(e.toString());
    		}
     
     
        }


    D:\Documents and Settings\karayat\Desktop\DERNIER TEST\MARCHE\IntGraph\src\intgraph\MATLAB Compiler Runtime\v710\bin\win32\Encoursfin.exe
    java.io.IOException: Cannot run program "Encoursfin.exe" (in directory "D:\Documents and Settings\karayat\Desktop\DERNIER TEST\MARCHE\IntGraph\src\intgraph\MATLAB Compiler Runtime\v710\bin\win32"): CreateProcess error=2, Le fichier spécifié est introuvable

    Pourtant mon programme est bien dans ce repertoire...

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            try {
                String s;
                File f = new File("C:/MATLAB Compiler Runtime/7zFM.exe");
                Runtime Run = null;
                Run = Runtime.getRuntime();
                System.out.println(f.getName());
                if (f.exists()) {
                    Process Proc = Run.exec(f.getAbsolutePath());
                } else {
                    System.out.println(" f n'existe pas");
                }
            } catch (Exception e) {
                System.out.println(e.toString());
            }
    peut être comme cela tu a une jre 1.6 ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 23
    Points
    23
    Par défaut
    oui je suis en 1.6.

    Et avec ce code il me retourne :

    D:\Documents and Settings\karayat\Desktop\DERNIER TEST\MARCHE\IntGraph\src\intgraph\MATLAB Compiler Runtime\v710\bin\win32\Encoursfin.exe
    Encoursfin.exe


    je sens que c'est une toute petite chose que l'on arrive pas a voir c'est stressant :s

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par wazol Voir le message
    Je ne peux pas faire ca car mon chemin se trouve dans une variable String. J'ai essayé avec un String[] mais cela ne change rien le prog ne se lance pas.
    montre nous ta version avec String[]. La bonne manière de faire pour gérer les espaces est d'utiliser exec(String[]), où la première entrée du tableau et le nom de programme à exécuter, les autres entrées sont les paramètres.

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    pourquoi le problème de gestion des espace interviens pas sur le dossier "Program Files" ?

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 23
    Points
    23
    Par défaut
    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
    18
    19
    20
    21
    22
    23
    24
     
    try{
     
    String ch = jTextField7.getText();
    String s;
    String fin = "\\MARCHE\\IntGraph\\src\\intgraph\\MATLAB Compiler Runtime\\v710\\bin\\win32\\Encoursfin.exe";
    String ch1=ch.substring(0,ch.lastIndexOf("\\"));
    String julie=ch1+fin;
    System.out.println(julie);
    Runtime Run = null;
    Run = Runtime.getRuntime();
    Process Proc = Run.exec(new String[]{julie});
    BufferedReader r1 = new BufferedReader(new InputStreamReader(Proc.getInputStream()));
                while(( s =r1.readLine()) != null){
               System.out.println(s);
            }
            }
     
    	catch (Exception e){
    			System.out.println(e.toString());
     
            }
     
        }
    j'ai meme essayé comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process Proc = Run.exec(new String[]{"D:\\Documents and Settings\\karayat\\Desktop\\DERNIER TEST\\MARCHE\\IntGraph\\src\\intgraph\\MATLAB Compiler Runtime\\v710\\bin\\win32\\Encoursfin.exe"});
    C'est le chemin exact de l'executable... Il ne se passe rien pas d'erreur mais pas de programme en route :s

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ce programme n'attends pas des paramètres? Que se passe-t-il si tu fais un Proc.waitFor()? Tu attends indéfiniment, tu as une erreur? Quelle valeur te retourne cet appel? Enfin, as-tu vérifié qu'il n'y a rien dans l'errostream? tu lit bien l'inputstream mais pas l'errorstream, hors c'est là que l'application mettra ses messages d'erreur.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Je n'ai pas de PC sous la main pour tester, mais comme tu utilises des \, ne faudrait-il pas :
    "D:\\\\Documents and Settings\\karayat\\Des... ..."

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 23
    Points
    23
    Par défaut
    Je viens de retester avc le String[] et cela marche... Pourtant je ne vois pas de difference dans mon code avec le precedent... Une bonne nuit de sommeil et ca repart

    Merci a vous!

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

Discussions similaires

  1. Raccourcis clavier avec IE: , rien ne se passe
    Par bladerunners dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 10/06/2008, 11h05
  2. Rien Qd coupure réseau avec un client TClientSocket
    Par fba dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/02/2006, 13h27
  3. [vb.net][requete]rien ne se passe
    Par Alex35 dans le forum VB.NET
    Réponses: 3
    Dernier message: 23/11/2005, 13h00
  4. [FLASH MX2004] Rien ne se passe qd j'execute mon code
    Par adilou1981 dans le forum Flash
    Réponses: 2
    Dernier message: 27/07/2005, 23h31
  5. authentification user+pass avec pg_dump
    Par radium dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 26/07/2005, 12h47

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