Lancement d'application à partir de Java

BugsByte Messages postés 2 Date d'inscription lundi 28 avril 2003 Statut Membre Dernière intervention 1 février 2004 - 29 sept. 2003 à 21:31
cs_ABCHA Messages postés 1 Date d'inscription lundi 24 décembre 2007 Statut Membre Dernière intervention 5 avril 2008 - 5 avril 2008 à 00:18
Salut,

J'ai plusieurs questions concernant le lancement d'application à partir d'un programme Java:

Est-il possible de lancer une application à partir d'un programme Java ?
Si oui, comment ? Peut-on savoir quand l'application se termine ?

Est-il possible de lancer l'application par défaut associé à un fichier,
depuis un programme Java (ex: le lancement d'un fichier .doc lance Word et ouvre le fichier dans celui-ci) ?

Merci d'avance
BugsByte

3 réponses

JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
1 oct. 2003 à 05:50
Salut,
Il est possible de lancer une application à partir d'un programme Java.
La solution est OS dépendante, car la commande intérieur dépend de l'OS. Par exemple on ne mettra pas la même chose pour Win98, Win XP, Linux, Mac, ... ceci étant dut principalement que la gestion des applications n'est pas tout à fait la même ou varie complétement pour chaqu'un d'eux.
Aprés cet avertissement, voici la façon dont on procéde, on utilise les classes Runtime (java.lang) et Process (java.lang).
Runtime est l'environement d'éxécution, et Process le processus (ou application) en exécution.
Les étapes nécéssaires :
1) mettre dans une chaîne de caractères la commande systéme qui lance l'application. En général, nom de la comande, nom de l'application, pramétres. Ici j'appel cette chaine "commande"
2) Récupérer l'environement d'éxecution :
Runtime environement = Runtime.getRuntime();
3) Créer le processus d'excussion :
Process processus = environement.exec(commande);
Attention, ne pas oubliser de capturer l'exception IOException (java.io), pour traiter les problème d'éntrée/sortie éventuels

Maintant le processus est lancé.
Pour communiquer avec lui, la classe Process posséde quelques méthodes interessantes :

getOutputStream, permet d'envoyer des informations aux processus. Il est judicieux d'englober ce flux dans un flux en buffer, en effet, on ne sait pas quand les informations seront traitées.

getInputStream, permet de recvoir des informations de la part du processus. Comme on ne sais pas quand ces infos arrivent, ni à quelle fréquence, il est judicieux d'encapsuler ce flux dans un flux en buffer

getErrorStream, flux des erreurs provoquées par le processus. Même remarque que précédement.

waitFor(), attend la fin du processus. Il renvoie 0, si la sortie du processus est normale. Sinon c'est un code d'erreur de sortie qui dépend de l'application

exitValue(), la valeur produite à la sortie de l'application. Il renvoie 0, si la sortie du processus est normale. Sinon c'est un code d'erreur de sortie qui dépend de l'application

destroy(), détruit le processus. Attention avec cette méthode, une destruction sauvage peut provoquée des dégats, cela dépend de l'application.

Bon ça répond à quelques une de tes questions ;)

Pour le lancer de l'application par défaut, certains OS inclus cette possibilité, il s'aggit en fait d'une application qui choisit la bonne application à utiliser. Le problème est de savoir quel est son nom et comment l'invoquer.

JHelp
0
cs_ladi Messages postés 2 Date d'inscription mardi 13 juillet 2004 Statut Membre Dernière intervention 27 juillet 2004
22 juil. 2004 à 09:55
Une autre solution consiste à utiliser le plug-in ant
http://ant.apache.org

Dans Eclipse il suffit de faire :

click droit sur son projet->properties->java build path

Puis clicker sur add externel jar et de naviguer depuis le repertoire d'installation d'éclipse jusqu'à plugins/org.apache.ant (installé par défaut)

Voici un exemple :
[font=Courier New]]
import org.apache.tools.ant.taskdefs.*;
import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.Project;
public class Invite {

public void execute(String command) {
System.out.println("on execute "+command);
Project project = new Project();
project.init();
project.getBaseDir();
ExecTask exec = (ExecTask) project.createTask("exec");
Commandline cmd = new Commandline(command);
exec.setCommand(cmd);
exec.execute();
System.out.println("commande executée\n");
}

}

[/font=Courier New
Cette solution a personnellement mieux marcher que la solution avec getruntime

amusez vous bien les ptits malins
0
cs_ABCHA Messages postés 1 Date d'inscription lundi 24 décembre 2007 Statut Membre Dernière intervention 5 avril 2008
5 avril 2008 à 00:18
, Comment peut on executer (ou lancer l'executable ) un prog en C++ a partir d'une classe java  ( avec ou sans main())
merci pour votre reponse .( le plus vite possible  svp car  c concernant  le pfe ).
0
Rejoignez-nous