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 :

Process et Runtime dans un jar


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Par défaut Process et Runtime dans un jar
    Bonjour à tous,

    Après avoir diagnostiqué des fuites mémoires avec le Java Outlook Connector, j'ai décidé de repenser mon code et de rassembler les morceaux de mon appli qui utilisaient cette librairie dans des programmes indépendants.

    Ainsi, le projet fonctionne maintenant de la sorte :

    Mon appli effectue tous ces traitements, lorsque l'on veut récupérer des mails d'une boite Outlook -->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Process proc = Runtime.getRuntime().exec("java plateforme.ReceiveMail param1 param2 ...");
    De même, lorsque que l'on veut envoyer des mails avec une boite Outlook -->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process proc = Runtime.getRuntime().exec("java plateforme.SendMail param1 param2 ...");
    Enfin lorsqu'une manip avec un autre protocole (ftp, SMTP/pop3, mapping réseau) échoue, on envoie un mail d'alerte avec Outlook -->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process proc = Runtime.getRuntime().exec("java plateforme.Alert param1 param2 ...");

    Les classes appelantes et appellées sont toutes dans le package "plateforme" d'où la nécessité d'indiquer : nom_du_package.nom_de_la_classe.

    Tout ce petit schéma d'exécution fonctionne à merveille. Je lis les flux des commandes lancées (in, erreur), je les ferme ainsi que le flux out, aucune exception les mails sont bien reçus et envoyés.

    En revanche, une fois que j'ai créé mon jar (fatJar d'éclipse) impossible d'obtenir un déroulement correct. Toujours aucune exception relevée mais aucun traitement effectué, le code de retour est 1 pourtant je n'ai même pas l'impression que la commande lance les prog java.

    Est-ce une erreur de chemin dans le exec ou y-a-t'il une autre raison ?


    Merci d'avance pour vos remarques et bonne continuation...

    @++

  2. #2
    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,


    Et tu n'as rien dans les flux de retour de ton process ???

    a++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Par défaut
    abosolument rien, je lance mon jar en ligne de commande, je ne retrouve aucun des affichages de mes progs externes ni d'exceptions...

    et le waitfor() me parait exceptionnellement rapide...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Par défaut
    En fait, je viens de voir que mes commandes se lançaient bien (un java.exe supplémentaire trè bref à chaque fois)... Par contre je ne comprend pas pourquoi cela ne marche pas... j'ai construit mon jar avec les lib externes, est-ce que mes progs indépendants ne trouvent plus ces librairies ???

  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
    en effet tu devrais indiquer les différents jar dans ta commande !!!

    Tu es vraiment sûr de ne pas avoir une erreur de java.exe ????

    a++

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Par défaut
    bah écoute, je ne suis plus sur de rien. Au départ, je fermais juste mes flux puis pour essayer de débugger un peu je les ais affichés. C'est peut être pas très beau mais il me semble que il m'est arrivé d'avoir des messages d'erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Process proc = Runtime.getRuntime().exec(exec);
    			out=new BufferedInputStream(proc.getInputStream());
    		    byte[] b=new byte[1024];
    		    int n=out.read(b);
    		    for(int i=0;i<n;i++) System.out.print((char)b[i]);
    			err=new BufferedInputStream(proc.getErrorStream());
    			byte[] b2=new byte[1024];
    		    int n2=out.read(b);
    		    for(int i=0;i<n2;i++) System.out.print((char)b2[i]);
    Maintenant, je lis peut être mal mon flux d'erreur...

    Sinon en ce qui concerne la commande avec les librairies, pourrais tu me montrer à quoi cela ressemble ???

    Mais alors, fatjar me fais un fichier .classpath avec les chemins des jars des libs que j'utilise. Tu es d'accord que les chemins sont de la forme : y:\...\...
    \edtftpj...jar. Mais alors pourquoi, lorsque je copie le jar de ma machine vers la machine de production (ormis les problèmes de Process) l'appli tourne normalement ???

    Je serais indisponible pendant une 1h45 (pause déjeuner), mais j'attends encore d'autres de tes remarques car je suis vraiment perdu...

    Merci d'avance !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/04/2009, 01h43
  2. Réponses: 3
    Dernier message: 24/11/2006, 11h12
  3. [Jar][Classpath]Pb chargement resource classpath dans un jar
    Par Pill_S dans le forum Général Java
    Réponses: 20
    Dernier message: 01/10/2004, 20h12
  4. [JAR] Accéder à un fichier dans un jar
    Par Nanoua dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 06/07/2004, 13h00
  5. [jar] BufferedImage issue d'un .jpeg dans un jar
    Par tit_henry dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 13/05/2004, 10h09

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