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

Servlets/JSP Java Discussion :

Servlet avec Runtime.getRuntime().exec(. . .)


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Par défaut Servlet avec Runtime.getRuntime().exec(. . .)
    Bonjour,

    étant donné que c'est mon premier post ici je voudrais tout d'abord remercier l'ensemble des membres de ce forum, c'est une vraie mine d'or en de nombreux domaines.

    Je vais maintenant vous exposer mon problème ^^

    Je bosse sur une servlet qui appelle un programme au moyen d'une ligne du type suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process proc = Runtime.getRuntime().exec(...)
    À la base, l'argument de mon exec était la ligne de commande elle-même (à savoir ffmpeg (moteur de conversion vidéo) avec ses arguments), mais dans ce cas le processus de conversion ne démarrait pas si je ne fermais pas mon serveur web (Tomcat).

    J'ai réussi à passer outre ce problème en appelant ffmpeg indirectement, via un invite de commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process proc = Runtime.getRuntime().exec("cmd /c start "+...)
    Le problème est que je voudrais pouvoir traiter les éventuelles erreurs de ffmpeg, or (et selon toute logique), les différents accès qu'offre la classe Process (exitValue(), getInputStream()...) concernent l'exécutable "cmd", et non ffmpeg !

    Quelqu'un aurait-il une idée de comment je pourrais récupérer le code de retour et/ou la sortie standard (ou d'erreur) de ffmpeg dans ces conditions ?

    Merci de m'avoir lu. Cordialement,

    enzyme59

  2. #2
    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
    Il te faut lancer directement ffmpeg. Une gestion correcte des flux te permettra de récupérer les erreurs. Va faire un tour dans la FAQ
    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.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Par défaut
    Merci de ta réponse. Effectivement grâce aux fonctions de la classe Process je pourrais récupérer les flux et traiter les erreurs...

    mon principal problème étant, je le répète, que si je lance directement ffmpeg avec mon Process, il ne démarrera pas si je ne ferme pas Tomcat (pour une raison que j'ignore). Mon projet devant à terme être publié sur la toile, tu imagines le malaise...

    Dans les deux cas, j'suis coincé une idée ? xD

  4. #4
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Je te conseille d'utiliser la librairie shell de notre cher Adiguba : http://blog.developpez.com/adiguba?t...es_plus_simple

    Dis moi ce que ca donne, notamment si tu arrives à lancer ta ligne de commande "normale"

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Par défaut
    Wahoo, c'est proprement hallucinant !

    Cette API a l'air géniale ! J'essaye de suite et je te dis ce que ça donne.

    Merci pour le lien !

  6. #6
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Elle l'est effectivement (un petit slurp à Adiguba, d'ailleurs, j'utilise moi même l'API dans mon dernier projet).

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

Discussions similaires

  1. Problème compilation avec Runtime.GetRunTime().exec(javac)
    Par Alkadabra dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 17/02/2010, 22h43
  2. Runtime.getRuntime().exec(command) à partir d'une servlet
    Par cotede2 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 04/05/2009, 16h26
  3. passer des arguments avec Runtime.getRuntime().exec;
    Par firgon dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 07/11/2008, 07h16
  4. runtime.getruntime.exec() avec envp
    Par babap1 dans le forum Langage
    Réponses: 2
    Dernier message: 17/07/2008, 11h19
  5. [Swing] execution avec Runtime.getRuntime().exec
    Par benssj5 dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 25/08/2004, 14h54

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