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 :

Execution d'un exécutable via un programme Java


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 26
    Points : 29
    Points
    29
    Par défaut Execution d'un exécutable via un programme Java
    Bonjour à tous,

    Cela fait quelques années maintenant que je fais de la programmation Java et il y a une chose qui me pose toujours problème, c'est l'exécution d'un programme (mon dernier exemple du moment est un exécutable Matlab) via un programme Java.
    J'ai eu beau lire beaucoup de topics là dessus mais je ne trouve toujours pas de solution miracle qui ne me donnera jamais aucun bugs ni sous Windows ni sous Linux.

    J'ai l'impression que sous Linux, j'ai besoin de faire appel à la méthode:
    Dans le cas contraire, je reçois le message d'erreur suivant:
    process hasn't exited
    Alors que sous Windows l'exécution de cette méthode Process.waitFor() me faire perdre la main sur le process et je me retrouve avec des threads fantômes.

    Ma question est donc la suivante:
    Y aurait-il une solution/méthode qui marchera à tous les coups avec n'importe quelle version de Java (1.4 ou plus récente) en renvoyant les flux de sortie (out et err) ?
    Faut-il forcément dissocier une exécution sous Windows d'une exécution sous Linux ? ce qui peut peut-être paraitre logique puisque le shell ne fonctionne pas de la même manière que le batch.

    J'espère avoir été assez clair.

    Merci de vos réponses.
    C'est au pied du mur... que l'on voit le mieux le mur!!

  2. #2
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Il faudrait que tu montres ton codes aux alentours du waitFor histoire de voir dans quel contexte tu l'utilises.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 26
    Points : 29
    Points
    29
    Par défaut
    Je veux bien mettre mon code mais je ne demande pas de débugger mon code. Ce que je demande c'est si il existe une manière général d'exécuter un programme externe. Je demande un avis général pour savoir comment vous vous faites.
    J'ai remarqué que cette question (d'une manière générale) revenait assez souvent. C'est bien parce que justement j'ai l'impression qu'il n'existe pas une solution qui marchera pour n'importe lequel des programmes externe que l'on cherche à exécuter.
    C'est au pied du mur... que l'on voit le mieux le mur!!

  4. #4
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Je demande à voir le code car j'ai eu plusieurs soucis avec l'appel de commandes système. Notament des problèmes de conception avec le waitFor justement. Personnellement je travaille sous UNIX ( AIX pour être précis ), et sur ce système, une fois mes erreurs de conception résolues, je n'ai aucun soucis...
    Enfin bon je ne t'oblige à rien...

  5. #5
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par sixkiller
    C'est bien parce que justement j'ai l'impression qu'il n'existe pas une solution qui marchera pour n'importe lequel des programmes externe que l'on cherche à exécuter.
    Il faut utiliser/consommer puis fermer les différents flux du process (stdin, stdout et stderr) dans des threads séparés avant ou en parallèle de l'appel à waitFor() afin d'éviter les dead-lock... Mais sans code on ne peut pas deviner l'origine du problème...

    Enfin d'où sort ce message "process hasn't exited" ???

    a++

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Salut
    Est ce que tu peux essayer ça ?

    /* executiondu code java */
    ....
    ....
    ...
    /* Execution de ta commande Systeme exple : */
    Runtime.getRuntime.exec("cmd/k ....")
    object.wait(5000)
    /* Suite de ton programme.

    A l'appel de la commande System, tu dois creer un objet quelconque et appeler immediatement la sa methode wait(en milli secondes) afin de laisser le temps a ton OS de traiter le thread, et tu reprend automatiquement la main avec java.
    Salut,

Discussions similaires

  1. Exécuter une commande DOS via un programme Java
    Par af.zakaria dans le forum Général Java
    Réponses: 6
    Dernier message: 06/12/2013, 09h55
  2. Réponses: 2
    Dernier message: 15/12/2007, 16h52
  3. générer l'exécutable d'un programme java
    Par alphonse62 dans le forum Général Java
    Réponses: 3
    Dernier message: 26/05/2007, 05h06
  4. exécution d'un programme java dans eclipse
    Par hammag dans le forum Eclipse Java
    Réponses: 9
    Dernier message: 25/11/2006, 12h34
  5. Réponses: 3
    Dernier message: 14/04/2006, 15h54

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