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 :

Exécuter programme externe


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut Exécuter programme externe
    Bonjour,
    je suis nouveau et je ne sais pas trop où poster, je pense être au bonne endroit.
    Avant toute réponse tu doit chercher, je peut vous dire j'ai CHERCHER et je trouve.
    comme ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Runtime runtime = Runtime.getRuntime();
    runtime.exec(new String[] { "test.bat" } );
    Mais malheureusement mon batch ne se lance pas.
    Que faire?
    Merci d'avoir lu

  2. #2
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Bonjour,

    peut que la solution à votre problème se situe ici: http://java.developpez.com/faq/java/...icationExterne

    @ bientôt...

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    Merci de votre réponse mais mon batch ne se lance toujours pas.
    voila mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
            Process proc = Runtime.getRuntime().exec("test.bat");
    } catch (IOException e) {
     
    }

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Par défaut
    Hello,

    Si vous affichiez l'exception catchée en affichant la stackTrace au lieu de la masquer cela nous donnerait plus d'indications... Si il trouve ou non le fichier test.bat notamment

    A+

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    Euh... Pas trop compris ce que vous avez dit mais je n'ai rien caché et lorsque mon fichier n'existe pas il me met une erreur et là je n'ai aucune erreur.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Par défaut
    Je veux dire rajouter ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
            Process proc = Runtime.getRuntime().exec("test.bat");
    } catch (IOException e) {
            e.printStackTrace();
    }
    Dans ce cas il vous voir dans les canaux d'entrées et d'erreurs à savoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    process.getInputStream()
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    process.getErrorStream()
    pour voir d'ou vient le souci.

    A+

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    ok
    voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    try {
        	        Process proc = Runtime.getRuntime().exec("test.bat");
        	        proc.getInputStream();
        	        proc.getErrorStream();
        		} catch (IOException e) {
        	        e.printStackTrace();
     
        		System.out.println("erreur");
        	}
    Voici mon nouveau code et je n'ai toujours aucune erreur, je n'ai même pas erreur d'afficher.

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Par défaut
    C'est normal, il faut les mettre dans des threads à parts :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    new Thread() {
    			public void run() {
    				try {
    					BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
    					String line = "";
    					try {
    						while((line = reader.readLine()) != null) {
    							//logger.info(line);
    							System.out.println(line);
    						}
    					} finally {
    						reader.close();
    					}
    				} catch(IOException ioe) {
    					//logger.error(line);
    					ioe.printStackTrace();
    				}	
    			}
    		}.start();
     
    		new Thread() {
    			public void run() {
    				try {
    					BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
    					String line = "";
    					try {
    						while((line = reader.readLine()) != null) {
    							//logger.error(line);
    							System.out.println(line);
    						}
    					} finally {
    						reader.close();
    					}
    				} catch(IOException ioe) {
    					ioe.printStackTrace();
    				}	
    			}
    		}.start();

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    Pourquoi tu fait un thread, moi je n'en avais pas fait c'est peut être du as ça que ça fonctionne pas
    edit:je suis débutant en java

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Par défaut
    Commence par lire ce tuto : http://ydisanto.developpez.com/tutoriels/j2se/runtime/ car il y a des notions que tu dois assimiler tout d'abord. Si il y a des choses qui t'échappent, n'hésite pas à consulter la FAQ : http://java.developpez.com/faq/java/

    Reviens demander de l'aide ensuite mais pas avant d'avoir tout lu.

    A+

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    C'est lui que j'ai lu avant de poser la question et en java j'ai lu le tuto du sdz .
    Moi c'est seulement executer une application externe qui m'intéresse, je ne veux pas récupérer de flux de sortie

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    C'est bizarre il me génère toujours aucune erreur mais dan sle flux de sortie il me met ce que contient mon programme, quand je met pause dans mon batch il met D:\java\exec>pause et quand je met
    echo bonjour il met bonjour. et dans le gestionnaire des tâches il y a le cmd de lancé. Pourquoi ne traite il pas le batch avec dos? Pourquoi il l'interprète il tout seul?
    Mais si je met un exe il arrive a me le lancer sans erreur( il met juste le bonjour et pause et après il l'enlève ça doit être le buffer,non? Pourtant je n'ai pas demandé d'exécuter le batch)
    Et lorsque je lance un vbs il me dit que ce n'est pas une application win32 valide
    Merci

  13. #13
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    pour exécuter une commande via le dos il faut préfixer la commande d'un cmd /c


    dans ton cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Runtime runtime = Runtime.getRuntime(); 
    runtime.exec(new String[] {"cmd.exe", "/c", "test.bat" } );

  14. #14
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    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 483
    Par défaut
    Citation Envoyé par codeurphp Voir le message
    Moi c'est seulement executer une application externe qui m'intéresse, je ne veux pas récupérer de flux de sortie
    Même si vous n'etes pas obligé de récupérer les flux de sortie, si votre application externe tente d'afficher un message d'erreur, vous ne le verrez pas si vous ne lisez pas les flux. aussi, si vous n'utilisez pas les flux, il faut les fermer, sous peine de bloquer l'application exécutée.

    Vous n'avez pas d'erreur -> C'est que l'application est bien lancée, le reste ne concerne plus java. Pour voir ce que fait l'application lancée, il faudra aller voir ses messsage à elle.

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    C'est quoi le /c et pourquoi le vbs me génère des erreur.
    Merci

Discussions similaires

  1. [Système] exécution d'un programme externe
    Par wonderyan dans le forum Langage
    Réponses: 2
    Dernier message: 17/09/2007, 13h40
  2. Réponses: 3
    Dernier message: 06/06/2007, 16h19
  3. exécution d'un programme externe
    Par didiss dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 04/04/2007, 13h29
  4. Exécuter un programme externe
    Par nourbane dans le forum ASP
    Réponses: 3
    Dernier message: 07/09/2006, 19h52
  5. Comment exécuter un programme externe ?
    Par spikto dans le forum Langage
    Réponses: 12
    Dernier message: 27/06/2005, 17h18

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