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

AWT/Swing Java Discussion :

problème d'exécution d'une application externe décodeur dans une application java


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut problème d'exécution d'une application externe décodeur dans une application java
    Bonsoir,

    Je veux exécuter une application externe dans mon application JAVA,j'essaye d'utiliser le code ci dessous
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.lang.ProcessBuilder.Redirect;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.stream.Collectors;
    import java.util.stream.Stream;
    /**
     *
     * @author ASUS
     */
    public class rrcdecoder {
     String protocol;
       String msghexa;
       String line = "";
      //  public static void main(String[] args) throws IOException {
            final List<String> commands = new ArrayList<String>(); 
            public rrcdecoder (String p,String m)
            {protocol=p;
         msghexa=m;}
            public String getcomment() throws IOException{
                   // msghexa="6c00502ac8434b908081008b4ab0";
            //protocol="RrcDl-DCCH";
            String messageId = null;
            String sens;
            if (protocol=="RrcDl-DCCH" )
                    sens="4";
            else 
                sens="10";
     
    commands.add("decoderplugincli.exe");
    commands.add("--d");
    commands.add("-s");
    commands.add(msghexa);
    commands.add("-f");
    commands.add("textfullfield ");
    commands.add("-k");
    commands.add("0401f763 ");
    commands.add("-o");
    commands.add(sens);
     
     
    Runtime runtime = Runtime.getRuntime();
    final Process process = runtime.exec(new String[] { "C:\\gatodecoder-1.3.3\\exe",commands.toString()}) ;
     
    // Consommation de la sortie standard de l'application externe dans un Thread separe
    new Thread() {
    	public void run() {
    		try {
    			BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
     
    			try {
    				while((line = reader.readLine()) != null) {
    					// Traitement du flux de sortie de l'application si besoin est
                                            System.out.println(line);
    				}
    			} finally {
    				reader.close();
    			}
    		} catch(IOException ioe) {
    			ioe.printStackTrace();
    		}
    	}
    }.start();
     
    new Thread() {
    			public void run() {
    				try {
    					BufferedReader reader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
    					//String line = "";
    					try {
    						while((line = reader.readLine()) != null) {
    							// Traitement du flux d'erreur de l'application si besoin est
    							System.out.println(line);
    						}
    					} finally {
    						reader.close();
    					}
    				} catch(IOException ioe) {
    					ioe.printStackTrace();
    				}
    			}
    		}.start();
    	    return line;
    }}
    mais ça marche pas,prière de vous m'aider
    Merci d'avance pour vos réponses
    y'a une exception dans la ligne 47
    Voici ce que m'affiche la console
    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
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    	at java.lang.Runtime.exec(Runtime.java:620)
    	at java.lang.Runtime.exec(Runtime.java:485)
    	at rrcdecoder.getcomment(rrcdecoder.java:47)
    	at Scena.tracerflow(Scena.java:249)
    	at Fenetre3$ListListener.doInBackground(Fenetre3.java:845)
    	at Fenetre3$ListListener.doInBackground(Fenetre3.java:784)
    	at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
    	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    	at javax.swing.SwingWorker.run(SwingWorker.java:334)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at java.lang.Thread.run(Thread.java:745)
    Caused by: java.io.IOException: CreateProcess error=5, Accès refusé
    	at java.lang.ProcessImpl.create(Native Method)
    	at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
    	at java.lang.ProcessImpl.start(ProcessImpl.java:137)
    	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    	... 12 more
     
    juil. 26, 2017 6:38:58 PM Scena tracerflow
    GRAVE: null
    java.io.IOException: Cannot run program "C:\gatodecoder-1.3.3\exe": CreateProcess error=5, Accès refusé
    	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    	at java.lang.Runtime.exec(Runtime.java:620)

  2. #2
    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
    Suffit de lire le message
    "C:\gatodecoder-1.3.3\exe": CreateProcess error=5, Accès refusé
    ça m'étonnerais très fort que t'aie un programme appelé C:\gatodecoder-1.3.3\exe, déjà parce que sous windows presque tout finit par une extension.

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Suffit de lire le message


    ça m'étonnerais très fort que t'aie un programme appelé C:\gatodecoder-1.3.3\exe, déjà parce que sous windows presque tout finit par une extension.
    Bonjour
    Donc ça vaut dire que je dois ajouter le nom de l'application "decoderplugincli.exe" je veux afficher les lignes de ce process mais rien est affiché maintenant
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    	import java.io.BufferedReader;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.lang.ProcessBuilder.Redirect;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.stream.Collectors;
    import java.util.stream.Stream;
    /**
     *
     * @author ASUS
     */
    public class rrcdecoder {
     String protocol;
       String msghexa;
       String line = "";
      //  public static void main(String[] args) throws IOException {
            final List<String> commands = new ArrayList<String>(); 
            public rrcdecoder (String p,String m)
            {protocol=p;
         msghexa=m;}
            public String getcomment() throws IOException{
                   // msghexa="6c00502ac8434b908081008b4ab0";
            //protocol="RrcDl-DCCH";
            String messageId = null;
            String sens;
            if (protocol=="RrcDl-DCCH" )
                    sens="4";
            else 
                sens="10";
     
    commands.add("decoderplugincli.exe");
    commands.add("--d");
    commands.add("-s");
    commands.add(msghexa);
    commands.add("-f");
    commands.add("textfullfield ");
    commands.add("-k");
    commands.add("0401f763 ");
    commands.add("-o");
    commands.add(sens);
     
     
    Runtime runtime = Runtime.getRuntime();
    final Process process = runtime.exec(new String[] { "C:\\gatodecoder-1.3.3\\exe\\decoderplugincli.exe",commands.toString()}) ;
     
    // Consommation de la sortie standard de l'application externe dans un Thread separe
    new Thread() {
    	public void run() {
    		try {
    			BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
     
    			try {
    				while((line = reader.readLine()) != null) {
    					// Traitement du flux de sortie de l'application si besoin est
                                            System.out.println(line);
    				}
    			} finally {
    				reader.close();
    			}
    		} catch(IOException ioe) {
    			ioe.printStackTrace();
    		}
    	}
    }.start();    return line;
    }}
    merci encore pour vos réponses

  4. #4
    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
    tu lit le stdout de l'application lancée mais pas son stderr. Si les messages sont dans le stderr tu les perds

    Que se passe-t-il déjà quand tu lance ce programme "à la main" dans une ligne de commande? PArce que la commande que tu lance ne m'a pas l'air très catholique.

    Ensuite, utilise ProcessBuilder et son option pour rediriger les flux vers ton application (INHERIT IO) si tu veux juste afficher dans ton stdout ce qui se passe dans ce programe.

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    tu lit le stdout de l'application lancée mais pas son stderr. Si les messages sont dans le stderr tu les perds

    Que se passe-t-il déjà quand tu lance ce programme "à la main" dans une ligne de commande? PArce que la commande que tu lance ne m'a pas l'air très catholique.

    Ensuite, utilise ProcessBuilder et son option pour rediriger les flux vers ton application (INHERIT IO) si tu veux juste afficher dans ton stdout ce qui se passe dans ce programe.
    oui quand je lance le programme à la main dans la ligne de commande il marche bien voici une imprime écranNom : kk.PNG
Affichages : 753
Taille : 31,9 Ko
    oui justement je veux afficher dans la console ce qui ce passe dans ce programme comme ce qu'il m'affiche dans une ligne de commande pour enfin récupérer un type de message à fin de l'utiliser dans mon application,s'il vous plait comment je voudrais utiliser le ProcessBuilder avec l'option (INHERIT IO)?
    merci encore

  6. #6
    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
    Citation Envoyé par dalila15 Voir le message
    oui quand je lance le programme à la main dans la ligne de commande il marche bien voici une imprime écranNom : kk.PNG
Affichages : 753
Taille : 31,9 Ko
    oui justement je veux afficher dans la console ce qui ce passe dans ce programme comme ce qu'il m'affiche dans une ligne de commande pour enfin récupérer un type de message à fin de l'utiliser dans mon application,s'il vous plait comment je voudrais utiliser le ProcessBuilder avec l'option (INHERIT IO)?
    merci encore
    La commande que tu lance dans java est l'équivalent de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\gatodecoder-1.3.\exe\decoderplugincli.exe decoderplugincli.exe --d -s 6c00502ac8434b908081008b4ab0 -f "textfullfield " -k "0401f763 " -o 4
    tu noteras la duplication du nom du programme et la présence d'espaces excédentaires

    Citation Envoyé par dalila15 Voir le message
    s'il vous plait comment je voudrais utiliser le ProcessBuilder avec l'option (INHERIT IO)?
    merci encore


Discussions similaires

  1. Réponses: 3
    Dernier message: 23/01/2012, 14h50
  2. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  3. Contrôle dans l'application Android ou dans une page PHP ?
    Par CestPasFaux dans le forum Android
    Réponses: 7
    Dernier message: 30/06/2010, 11h48
  4. Recherche de valeur dans une feuille et affichage dans une autre
    Par Zebulon777 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/05/2007, 09h40
  5. Réponses: 3
    Dernier message: 06/09/2006, 09h06

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