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

Java Discussion :

Lancement .bat d'une classe java et gestion des flux de la sortie standard.


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2010
    Messages : 59
    Par défaut Lancement .bat d'une classe java et gestion des flux de la sortie standard.
    Bonjour,

    Je travail actuellement sur un script .bat, auquel je doit ajouter une interface graphique, ce qui ai fait.
    Maintenant j'ai deux soucis, le premier:

    - je n'arrive pas a exécuter correctement mon .java.
    J'ai mi dans un .bat ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    start java -classpath /*chemin lib*/ /*Nom class*/
    exit
    Cet appel fonctionne mais la fenêtre dos reste ouverte.je voudrai la masquer tout en gardant l'interface graphique ouverte.

    - second problème, dans la même idée précédemment, je ne dois pas avoir de fenêtre dos, pour ce faire l'utilisation /C start /B /MIN, enlève la fenêtre dos, le problème c'est que je veux donc catcher toute les exeption et les mettre dans une fenêtré style pop-up qui fait défilé le texte mais je n'y arrive pas.
    mon code est un simple, j'ai juste un pannel avec quelque bouton, je sais comment générer un popup.. avec JDialog.. mais je n'arrive pas a mettre le texte a jour dessus par rapport a la sortie qu'on récupérer du process lancer..
    je lance mon .bat à l'aide d'un ProcessBuilder et je récupére les logs avec InputStream et je ne sais pas comment les mettre dans mon Jdialog et de les afficher a la volé.

  2. #2
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 095
    Par défaut Peut-être une piste
    Bonjour,

    Pour commencer, lancer une application java sans fenêtre DOS, il suffit d'invoquer l'exécutable javaw.exe au lieu de java.exe. Pour ce qui est de la fenêtre DOS, pourquoi voulez-vous récupérer ce qu'elle affiche ? puisqu'il s'agit là d'une fenêtre en stand-by de l'éxécution d'une instance de votre application si ce n'est des erreurs provoqué par votre application. Le langage java ne permettant quasiment pas de "compiler" sans lever les exception, vous avez tout le loisir de connaître vos messages d'erreur directement dans votre application sans aller la chercher dans la fenêtre DOS ?
    Sinon, pour écrire dans la chaîne message de votre JDialog à partir de votre inputstream, il vous suffit de l'encapsuler dans un BufferedReader afin d'y exploiter sa méthode ReadLine(), mais cela sous-entend de réaliser une écoute. Donc, une boucle qui va attendre qu'une ligne de texte finalisée par un retour chariot lui soit envoyé. La méthode readLine() renvoie un String qu'il suffit alors d'utiliser comme chaîne message du JDialog....
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2010
    Messages : 59
    Par défaut
    Merci pour ces réponses,

    Concernant le dos, initialement c'est un .bat qui est exécuter, mais il m'a été demander de faire une interface graphique, et pour éviter de réécrire tout le .bat j'ai utilisé un ProcessBuilder.

    pourquoi avoir écrit un .bat pour lancer le java? parce que la demande est de faire une interface graphique pour éviter de taper une ligne de commande, du coup a priori dans mon DOS je dois lancer "start java interface"..
    sinon je ne connaissait pas javaw.exe je vais faire des recherche dessus.

    Pour le second problème.. normalement mon proccessus lancer via ProcessBuilder permet de récupérer ce qui est affiche en retour de l’exécution du .bat, cette étape est réalisé je récupère bien les éléments dans un InputStream. Le problème c'est que sur mon interface graphique je ne veut pas la fenêtre dos, mais je veux bien un JDialog qui fasse défiler ce que devait afficher la fenêtre DOS.. en somme remplacer la fenêtre DOS par un JDialog, maintenant le setString ne passe sur mon Jlabel inclus dans mon Jdialog.. je ne sais pas si je dois faire comme ça mais en gros, je veux une fenêtre dynamique qui se substitue a la fenêtre du dos.

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Ta fenêtre DOS affiche exactement ce que tu lis via l'InputStream. Elle n'affiche que la sortie et l'erreur standard.
    Tu dis que tu récupères les données via l'InputStream, ton problème est-il d'écrire des données dans un JTextArea par exemple ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    @davly : Tu dois faire quoi exactement ?
    Parce que là tu sembles partir dans des trucs super-compliqué dont je ne comprend pas l'intérêt...

    a++

  6. #6
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2010
    Messages : 59
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,


    @davly : Tu dois faire quoi exactement ?
    Parce que là tu sembles partir dans des trucs super-compliqué dont je ne comprend pas l'intérêt...

    a++
    Moi non plus je ne vois pas l’intérêt.. l'utilitaire en .bat fonctionne parfaitement, il suffit juste de lancer le .bat avec en argument ce qu'il faut, mais le client ne touche pas une bille en informatique, même avec une doc qui explique la seul commande à lancer, ils nous ont remonté la nécéssité d'avoir une interface graphique qui contient ni plus ni moins qu'un DirectoryChooser et FileChooser et un bouton "convertir".

    Pour éviter de refaire tout le .bat en java j'utilise un ProcessBuilder puis un InpuStream qui récupere bien ce qui aurait du être afficher dans la fenetre DOS.

  7. #7
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2010
    Messages : 59
    Par défaut
    Oui exactement, et comme le traitement prend une dizaine de minutes, normalement la fenêtre DOS donne l'état d'avancement au fur et à mesure des étapes du script.
    donc oui récupérer ce texte et l'afficher de façon dynamique au fur et à mesure de l’exécution du script.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/08/2009, 13h09
  2. Réponses: 3
    Dernier message: 09/04/2006, 13h04
  3. appel d'une class java en javascript ou autre
    Par tit_oune dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/04/2006, 15h24
  4. [Tomcat]Executer une classe JAVA au demarrage de TOMCAT
    Par dehbi dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 18/08/2005, 14h23
  5. Réponses: 13
    Dernier message: 25/03/2005, 11h00

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