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 :

[API] Lancer une application externe via un code Java


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Points : 100
    Points
    100
    Par défaut [API] Lancer une application externe via un code Java
    Bonsoir,

    voilà je viens quasiment de terminer un petit programme Java qui me permet de lister le contenu d'un répertoire.

    En fait, il ne me reste plus que la dernière partie, pouvoir lancer, via un bouton 1 des fichiers contenu dans ce fameux répertoire.

    Donc en fait, j'ai créé un programme permettant de gérer mon contenu vidéo. Il liste tout çà, sait exactement le nom des fichiers .avi présents etc.
    Maintenant je voudrais qu'à partir d'un bouton, le lecteur par défaut des .avi s'ouvre et lis évidemment cette vidéo

    Parce que là, je cale, çà doit s'en doute être bête mais je ne vois pas

    Bonne soirée !

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


    Il faut utiliser une librairie externe : JDIC.
    Une petite recherche sur le forum te donnera plus de détail à propos de cette librairie...

    a++

  3. #3
    Membre averti Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Points : 437
    Points
    437
    qui dit Dieu n'existe pas dis que les programmes tournent sans processeur.

  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
    Fais une petite recherche sur le forum, le sujet à été abordé et résolu mille fois si ce n'est plus...
    Pour executer un programme, tu as la classe Runtime et plus particulièrement ses méthodes "exec(...)" --> voir javadoc.
    Sous windows pour lancer directement une application à partir d'un fichier ( .avi par exemple ) comme si tu double-clickais dessus , tu as la commande "start" et tu as également une version un peu différente et qui fonctionne mieux dont le détail a été posté ces derniers jours --> bouton "rechercher" sur le forum.

    [EDIT] grilled en beauté

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Points : 100
    Points
    100
    Par défaut
    Merci je testerai tout çà.

    En ce qui concerne la portabilité je m'en moque assez pour l'application que je construit, c'est un programme utilitaire uniquement à des fins personnelles, et comme j'utilise Windows, peu importe si çà ne fonctionne pas sous les environnements Unix.

    Merci beaucoup

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Points : 100
    Points
    100
    Par défaut
    Dans le code de l'autre post que voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
      public static void displayURL(String url) {
        boolean windows = isWindowsPlatform();
        String cmd = null;
        try {
          if (windows) {
            System.out.println(windows);
            cmd = WIN_PATH + " " + WIN_FLAG + " " + url;
            Process p = Runtime.getRuntime().exec(cmd);
          }
          else {
            cmd = UNIX_PATH + " " + UNIX_FLAG + "(" + url + ")";
            Process p = Runtime.getRuntime().exec(cmd);
            try {
              int exitCode = p.waitFor();
              if (exitCode != 0) {
                cmd = UNIX_PATH + " " + url;
                p = Runtime.getRuntime().exec(cmd);
              }
            }
            catch (InterruptedException x) {
              System.err.println("Error bringing up browser, cmd='" +
                                 cmd + "'");
              System.err.println("Caught: " + x);
            }
          }
        }
        catch (IOException x) {
          System.err.println("Could not invoke browser, command=" + cmd);
          System.err.println("Caught: " + x);
        }
      }
     
      public static boolean isWindowsPlatform() {
        String os = System.getProperty("os.name");
        if (os != null && os.startsWith(WIN_ID)) {
          return true;
        }
        else {
          return false;
        }
      }
    Il utilise ce que je suppose être des constantes WIN_PATH etc...
    Mais à quoi correspondent-elles???

  7. #7
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par k o D
    Mais à quoi correspondent-elles???
    Au chemin vers l'exécutable à lancer, et aux options éventuelles à lui passer en paramètre...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par plegat
    Citation Envoyé par k o D
    Mais à quoi correspondent-elles???
    Au chemin vers l'exécutable à lancer, et aux options éventuelles à lui passer en paramètre...
    Dans mon codage, la variable url contient déjà l'adresse absolue du fichier, pourtant celà ne fonctionne pas.

    Dans url j'ai: "i:\\test\video.avi"
    Et c'est à chaque fois l'exception qui se lance et pourtant ce fichier existe bel et bien

    (Non je n'ai pas oublié les doubles \\ sinon çà ne passerai pas à la compilation).

    Donc au final j'ai ceci:

    Process p = Runtime.getRuntime().exec("i:\\\\test\\video.avi");

  9. #9
    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
    c'est quoi exactement l'exception que tu te prends ? peux-tu nous en faire part via un copier-coller de e.printStackTrace() ?

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


    Pour moi ceci "i:\\test\video.avi" n'est pas un chemin valide (pourquoi deux \ au début ?)

    a++

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par iohack
    c'est quoi exactement l'exception que tu te prends ? peux-tu nous en faire part via un copier-coller de e.printStackTrace() ?
    java.io.IOException: CreateProcess: i:\video\l.avi error=193
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at Fenêtre.actionPerformed(Fenêtre.java:116)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
    Et l'adresse est bonne, en effectuant un copier-coller dans l'explorateur je lance bien la vidéo !

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par adiGuba
    Salut,


    Pour moi ceci "i:\\test\video.avi" n'est pas un chemin valide (pourquoi deux \ au début ?)

    a++
    C'est lui qui les rajoutait quand j'effectuais ceci:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    				File f = new File(DOSSIER_VIDEO+"\\"+infoVideo+".avi");
       			 System.out.println(f.getAbsolutePath());
    DOSSIER_VIDEO = "video"
    infoVideo = "l"

  13. #13
    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
    Normalement un chemin avec deux \\ne marche pas sous Windows... m^me par l'explorateur de Windows...

    Quand à ton exception cela signifie que tu veux lancer la vidéo comme une application, ce qui n'est pas possible.

    Quel est la commande que tu passe à Runtime.exec() ???

    a++

    PS : JDIC ne te convient pas ? Car ce serait nettement plus simple...

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par adiGuba
    Normalement un chemin avec deux \\ne marche pas sous Windows... m^me par l'explorateur de Windows...

    Quand à ton exception cela signifie que tu veux lancer la vidéo comme une application, ce qui n'est pas possible.

    Quel est la commande que tu passe à Runtime.exec() ???

    a++

    PS : JDIC ne te convient pas ? Car ce serait nettement plus simple...

    Effectivement ce n'est pas une application, c'est une vidéo:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process proc = Runtime.getRuntime().exec("i:\\video\\l.avi");
    (pour le \\ je me trompe, enfin c'est lui qui me renvoyait çà avec le code que j'ai mis plus haut.)

    Et pour le JDIC je dois bien avouer que je ne m'y connais pas assez, je ne suis qu'un pauvre étudiant en 1ère année

  15. #15
    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
    Runtime.exec() ne peut lancer que des applications, et non pas ouvrir les fichiers...

    Donc pour le lancer il faut que tu passes par un programme qui lancera l'application associé, ce qui donne pour Windows XP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process proc = Runtime.getRuntime().exec("cmd /C start i:\\video\\l.avi");
    Si tu veux que ton application reste portable il te faudra gérer les autres systèmes (Windows 9x, Unix/Linux, etc...)


    JDIC te fait ca tout seul, il suffit de télécharger la librairie...

    a++

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Points : 100
    Points
    100
    Par défaut
    Je n'ai jamais téléchargé de librairie, je ne sais pas trop où la mettre etc

    Et puis surtout, je suppose que j'ai besoin de cette librairie sur un autre pc si je veux que mon programme fonctionne?

    Sinon au niveau portabilité du système, quel serait la différence avec un windows 9x ? C'est surtout çà le problème.
    Parce que sinon j'ai la méthode de l'autre post qui détecte si l'OS est Windows ou un système Unix donc je peux faire la différence.
    Mais la différence entre 2 Windows

    En fait, ce programme sera lancé via un .exe (JavaExe) lui-même lancé par un autorun. Car ce programme est destiné à lister le contenu vidéo d'un CD.
    Donc franchement, je n'utilise pas d'environnement Unix, donc si çà ne fonctionne pas dessus, à la limite ce n'est pas grave, ce qui l'est plus c'est pour un windows 9x (que j'utilise encore sur un vieux pc)

    Maintenant si tu connais aussi l'instruction pour lancer le programme sur un environnement Unix, tu peux me le donner aussi

    Merci beaucoup en tout cas et désolé pour mes questions qui peuvent paraître stupide (oui çà va j'ai mis paraître )

  17. #17
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    Citation Envoyé par k o D
    Je n'ai jamais téléchargé de librairie, je ne sais pas trop où la mettre etc Razz
    Tu peux la mettre ou tu veux, le principale, c'est que le classpath pointe dessus.

    pour ca, tu as deux solutions, soit tu utilises l'option -classpath lors de la compilation et de l'execution, soit tu modifies la variable CLASSPATH de ton systeme. La plus portable est surement la premiere solution.

    Ensuite, ca s'utilise comme l'API standart.

    Citation Envoyé par k o D
    Mais la différence entre 2 Windows
    Il me semble avoir vu il y a quelque temps sur ce forum que la facon de lancer une appli n'est pas exactement la meme sous les vieux windows... donc raison de plus pour utiliser JDIC.

  18. #18
    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
    Citation Envoyé par benratti
    pour ca, tu as deux solutions, soit tu utilises l'option -classpath lors de la compilation et de l'execution, soit tu modifies la variable CLASSPATH de ton systeme. La plus portable est surement la premiere solution.
    Lorsque tu distribues ton Jar tu peux indiquer dans son Manifest son classpath (cf la FAQ Comment créer un jar exécutable ? ), ce qui permet de ne plus spécifier le classpath à chaque fois
    Il faut bien sûr que la librairies de JDIC soit distribuer avec ton jar (et pas dans ton jar).


    Citation Envoyé par benratti
    Citation Envoyé par k o D
    Mais la différence entre 2 Windows
    Il me semble avoir vu il y a quelque temps sur ce forum que la facon de lancer une appli n'est pas exactement la meme sous les vieux windows...
    Sous Windows NT/XP c'est cmd.exe, Sous Windows 9x/Me c'est command.com. Sous Linux/Unix cela dépend du gestionnaire de fenêtre il me semble...

    Citation Envoyé par benratti
    donc raison de plus pour utiliser JDIC.
    +1

    Surtout que cette partie de JDIC sera intégré dans Java 6 (c'est déjà présent dans la version beta).

    a++

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Points : 100
    Points
    100
    Par défaut
    Ok merci je testerai tout çà alors
    Je tenterai de faire tout celà
    Merci

  20. #20
    Membre actif Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Points : 227
    Points
    227
    Par défaut
    Bonjour.

    J'ai lu différents topics sur le lancement d'applications externe mais je n'ai pas trouvé mon bonheur

    A la base je voulais créer un petit script en batch mais les possibilités ne sont pas assez étendue.

    J'aimerais donc lancer une invite de commande msdos a partir d'un programme java et récupérer les input/outputStream pour communiquer avec elle... Mais je n'y arrive pas.

    Je ne comprend pas trop le méchanisme.
    Je pensais à la base instancier un nouveau Process, récupérer les flux puis lancer le processus en lui même mais apparement ce n'est pas la bonne méthode ...

    Qqun saurait m'aider?

    Merci d'avance

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

Discussions similaires

  1. [VB.NET] Comment lancer une application externe dans ma Form
    Par afdmats dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/10/2006, 15h27
  2. [API][Système] Appel d'une application externe via java
    Par Tasslekender dans le forum Général Java
    Réponses: 2
    Dernier message: 17/03/2006, 14h13
  3. [Runtime]lancer une application externe
    Par biozaxx dans le forum Général Java
    Réponses: 3
    Dernier message: 09/11/2005, 17h13
  4. [Système][Runtime]lancer une application externe
    Par mencaglia dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 22/09/2005, 17h27

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