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 :

récupérer la sortie d'un programme externe


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 17
    Points : 10
    Points
    10
    Par défaut [resolu] récupérer la sortie d'un programme externe
    Bonjour, ça fait 2h00 que je STFW ou j'ai trouvé un cours à ce sujet sur ce site que j'ai essayé de mettre en pratique, je teste un peu tout mais je n'y arrive pas.
    j'ai un programme java P1 qui en appelle un autre P2 qui effectue un calcul pour P1, P2 fonctionne bien je l'ai testé à part il donne le résultat du calcul sur la sortie standard. Par contre je n'arrive pas à récupérer cette sortie de P2 dans P1, le BufferedReader créé pour ça a pour valeur "null".
    Si quelqu'un a une solution pour moi je suis preneur wink.
    Le chemin vers P2 est correct, j'ai essayé en mettant un faux chemin et je n'ai carrément pas de valeur de retour.
    Voilà le code de P1:
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    package facturefct;
     
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.lang.*;
     
    /**
     * * @author diodio
     */
    public class Main {
     
        /**
         * @param args the command line arguments
         */
     
     
     
    	public static float calcul(int unite){
    		float total = 0.0f;
    		String reponse = "";
    		String argument = Integer.toString(unite);
    		Runtime runtime = Runtime.getRuntime();
    		try{
    			Process facture = runtime.exec(new String[]
    			{"/home/diodio/cnam/nfp135-accueuil_et_reconversion1/" +
    			 "04-tp04_tp05/tp5ex1/facture/dist/facture.jar", "100"}); 
     
    			BufferedReader reader = new BufferedReader(new InputStreamReader(facture.getInputStream()));
    			reponse = reader.readLine();
    			System.out.println("reponse = " + reponse);
    			total = Float.valueOf(reponse);
    			reader.close();
    		}catch(Exception exc){}
     
    		return(total);
    	}
     
        public static void main(String[] args) {
     
            int nbFacture = 0,
                nbUnite = 0;
     
            nbFacture = Tools.readInt("Entrez le nombre de factures à traiter: ");
     
            float tabMontant[] = new float[nbFacture];
            int tabUnite[] = new int[nbFacture];
     
            for(int i = 0; i < nbFacture; i++){
                nbUnite = Tools.readInt("Entrez le nombre d'unitées " +
                                        "(valeur négative pour nombre aléatoire): ");
                if (nbUnite < 0)
                    nbUnite = (int)(1000 * Math.random());
     
    			tabUnite[i] = nbUnite;
    			tabMontant[i] = calcul(nbUnite);
    	}
        }
     
    }

    Merci de votre aide.

  2. #2
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Bonjour,
    je n'ai pas trop l'habitude de faire ça mais la FAQ recommande de lire aussi le flux d'erreur, et surtout de faire tout ça dans 2 Thread séparés:
    http://java.developpez.com/faq/java/...gramme_externe

    Si ça se trouve tu n'as rien dans la sortie normale mais des erreurs dans la sortie d'erreur...
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    merci de ton aide , en fait j'avais mal compris le sujet, il fallait juste reprendre le code d'un 1° programme dans le 2° et non appeler le programme 1 depuis le 2° .
    J'ai quand même essayé le lien que tu m'a donné mais sans résultats .
    Si je trouve une solution je la posterai ça servira peut être à d'autre.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/11/2014, 11h57
  2. [console]Récupérer la sortie d'un programme console (débutant)
    Par Moravski dans le forum GTK+ avec C & C++
    Réponses: 9
    Dernier message: 14/02/2010, 10h37
  3. Récupérer sortie d'un programme externe
    Par EricPellegrini dans le forum Général Python
    Réponses: 7
    Dernier message: 16/05/2007, 20h11
  4. [C#] Récupérer la sortie d'un programme DOS
    Par olivier_23 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 12/08/2006, 13h54
  5. [Process] recuperer entree et sortie d'un programme externe
    Par Gob4 dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 22/09/2005, 18h18

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