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

Eclipse Platform Discussion :

Récupérer sortie console Linux dans la console d'Eclipse


Sujet :

Eclipse Platform

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 6
    Par défaut Récupérer sortie console Linux dans la console d'Eclipse
    Salut à tous,

    après plusieurs consultations des forums et discussions, je fini par poster ma question.

    J'ai créé un plugin pour Eclipse permettant de récupérer des exécutables (.sh) afin de lancer des outils internes à partir d'un plugin central.
    Jusque là, pas de soucis tout se déroule bien. Les outils sont bien lancés et les données traitées convenablement.

    Par contre, certains de mes outils (je précise développés en JAVA) renvoie des infos sur la console (System.out.println("xxx")) afin que l'utilisateur vérifie des connexions notamment.

    Le problème est que quand on lance le script (./monappli.sh) sur une Konsole sous linux les traces apparaissent bien. Je voudrai que quand je les lance via mon plugin Eclipse, les traces apparaissent dans la console Eclipse (le but étant de ne plus passer par la console) car elles apparaissent aujourd'hui dans le shell qui a lancé Eclipse.

    Je précise aussi qu'Eclipse est lancé à partir d'un shell (./eclipse.sh) et qu'ensuite mon plugin est disponible afin de lancer mes tools, mais les traces ressortent sur la Konsole qui lance Eclipse.

    ***

    De ce que j'ai pu voir sur le net, on peux utiliser ce dev :
    System.setOut( new PrintStream(...))

    Mais je ne l'ai vu que pour rediriger vers un fichier, ou un textarea par exemple.
    Mais vu qu'Eclipse dispose déjà d'une console prête, je recherche à rediriger mes traces sur cette console.

    Je pense vous avoir tout dit.

    Merci d'avance de vos réponses et j'espère qu'il y a une possibilité de redirection vers cette console Eclipse.


    Romain

  2. #2
    Membre chevronné Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Par défaut
    Il te sera toujours possible dans un plugin Eclipse d'ouvrir une console pour écrire dedans. Par contre, il faudra revoir les System.out ...

  3. #3
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 6
    Par défaut
    Citation Envoyé par djsnipe Voir le message
    Il te sera toujours possible dans un plugin Eclipse d'ouvrir une console pour écrire dedans. Par contre, il faudra revoir les System.out ...
    Salut,

    tout d'abord merci de m'avoir répondu.

    Est-ce que tu peux m'en dire plus à propos des System.out à modifier ?
    Je pense que tu veux entendre par la de tous les remplacer !

    L'idée est de reprendre le même principe que le plugin "Lomboz" que j'utilise dans un autre projet. Je ne sais pas si tu le connais mais il permet de générer des EJB et ouvre automatiquement la console d'eclipse pour y tracer les opérations effectuées pour terminer sur un "BUILD SUCCESSFUL" de mémoire.

    Donc je sais qu'il est possible d'ouvrir une console graphiquement.

    J'utilise ce code pour pouvoir lancer mes outils, tu y verra peux être un soucis empêchant l'ouverture de cette console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cmd = "......../appli.sh";
    p = Runtime.getRuntime().exec("/bin/sh");
    		 in=p.getOutputStream();
    	         in.write(cmd.getBytes());
    	         in.flush();
    Merci
    Romain

  4. #4
    Membre chevronné Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Par défaut
    Citation Envoyé par roro73 Voir le message
    Est-ce que tu peux m'en dire plus à propos des System.out à modifier ?
    Je pense que tu veux entendre par la de tous les remplacer !
    Oui Le plus simple c'est de tout remplacer par des appels d'un composant de log à toi, dont l'implémentation sait ouvrir la console Eclipse et écrire dedans. Si le plugin Lomboz le fait déjà, y'a plus qu'à regarder leurs sources .

    Par contre je n'ai pas très bien compris un point, tu lances des utilitaires Java depuis Eclipse via des scripts Shell ??? Parce que dans ce cas, ces programmes Java ne pourrons pas écrire dans la console Eclipse, il faudra que l'exécution de tes .sh continuent à logguer sur leur sortie standard, et de récupérer la sortie de cette execution par l'objet Process, et de tout réécrire vers la console Eclipse.

  5. #5
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 6
    Par défaut
    Citation Envoyé par djsnipe Voir le message
    Oui Le plus simple c'est de tout remplacer par des appels d'un composant de log à toi, dont l'implémentation sait ouvrir la console Eclipse et écrire dedans. Si le plugin Lomboz le fait déjà, y'a plus qu'à regarder leurs sources .
    Salut, oui le but est de pouvoir ouvrir la console d'Eclipse, d'écrire dedans en l'affichant. Et si besoin, de développer un composant perso. Mais ce que je recherche est la méthode de redirection si elle existe. Car un moyen auxiliaire serait le suivant : redirection sortie standard vers un fichier, un thread tourne et affiche dans un JTextArea les strings à chaque changement dans le fichier. Mais ca sera un peux lourd !!!

    Citation Envoyé par djsnipe Voir le message
    Par contre je n'ai pas très bien compris un point, tu lances des utilitaires Java depuis Eclipse via des scripts Shell ??? Parce que dans ce cas, ces programmes Java ne pourrons pas écrire dans la console Eclipse, il faudra que l'exécution de tes .sh continuent à logguer sur leur sortie standard, et de récupérer la sortie de cette execution par l'objet Process, et de tout réécrire vers la console Eclipse.
    Oui, je lance mes outils par leurs fichiers *.sh respectifs.
    Et en effet, les traces apparaissent dans la sortie standard.
    Je vais investiguer les docs de l'objet "Process" et essayer de trouver les sources de Lomboz, que je n'ai pas encore mis la main dessus.

    Je te tiens au courant
    Et encore merci

    Romain

  6. #6
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 6
    Par défaut
    Salut à tous,

    je viens de réussir à faire à peux prêt ce que je désirais : j'ai créé un plugin Eclipse permettant de lancer des outils via des scripts *.sh et je voulais récupérer les traces (System.out.println) qui apparaissent par conséquent dans le shell ayant lancé Eclipse dans l'IDE Eclipse même, et pourquoi pas dans la console déjà existante.

    Lancement d'un outils via son "fichier.sh"
    String cmd = "......../appli.sh";
    Process p = Runtime.getRuntime().exec("/bin/sh"); // créé une console
    OutPutStream in=p.getOutputStream();
    in.write(cmd.getBytes()); // envoie la commande à la console
    in.flush(); // exécute l'instruction
    Ensuite, créer une zone de texte qui va accueillir les traces (car je n'ai pas réussi à utiliser la console d'Eclipse)
    styledText = new StyledText(parent, SWT.SIMPLE); // l'objet s'inclu tout seul dans la même fenêtre que la View
    et pour terminer, via un BufferedReader, récupérer à partir du Process les traces.
    BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
    styledText.append(reader.readLine()+"\n"); // rajouter à la suite les traces
    Et avec tout ca, je m'en sors plutôt pas mal.

    Voila, merci à djsnipe pour son aide.

    Bonne prog
    Romain

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

Discussions similaires

  1. [Dev-Pascal] Afficher les caractères accentués dans la console et dans une MessageBox
    Par escargot72 dans le forum Free Pascal
    Réponses: 12
    Dernier message: 28/12/2014, 15h19
  2. [AC-2010] Comportement de DateDiff différent dans la console et dans un programme VBA
    Par laurent_42 dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/01/2014, 13h34
  3. Réponses: 1
    Dernier message: 23/07/2012, 13h50
  4. [VS 2005] Aucune sortie dans la Console
    Par Ouark dans le forum ASP.NET
    Réponses: 2
    Dernier message: 28/02/2008, 11h25
  5. Réponses: 6
    Dernier message: 31/10/2006, 15h18

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