Bonjour @ tous.
J'ai un programme JAVA qui utilise la classe Runtime pour lancer Firefox sous linux. Par contre sous windows, comment je peux faire pour récupérer le navigateur par défaut et le lancer?
Merci d'avance pour vos réponses.
Bonjour @ tous.
J'ai un programme JAVA qui utilise la classe Runtime pour lancer Firefox sous linux. Par contre sous windows, comment je peux faire pour récupérer le navigateur par défaut et le lancer?
Merci d'avance pour vos réponses.
Bonjour,
Si tu utilise Java 1.6, tu as la classe Desktop permettant de lancer le navigateur par défaut. Voir la méthode : browse
Si tu peux surement regarder le source de la classe et t'en inspirer.
A+
Gronono
D'ailleur sous linux lancer firefox via un Runtime.exec("firefox") n'est pas une solution 100% fiable si tu ne sais pas sur quelle machine ton appli est dépoyée.
Rien ne garantit qu'il soit installé.
Si java <1.6 tu peux essayer Runtime.exec("start http://monsiteweb.com/page.html"). Je ne suis pas certain que ce soit valide sur tous les OS
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Cette commande permet à partir d'une fenetre Dos, de lancer le navigateur à l'adresse spécifiée.
Si! C'en est une au moins sous XP (il me semble aussi sous Win98 mais je suis plus certain). Tu m'as fait douter, mais c'est bien un commande standard d'après "help start".
Ca marchait aussi sur une distrub linux que j'avais essayé mais je ne sais pas du tout si c'est standard
Ceci dit commec'est une commande windows, il faudra probablement faire "cmd /c start http://site.com/page.html"
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Pour rester portable (ce code ne fonctionne que sous les Windows famille NT), il serait quand même préférable d'utiliser JDIC pour du Java < 1.6...
Sinon un conseil : lorsque vous lancez des applications graphiques via Runtime.exec(), il faut toujours pensez à fermer les flux d'E/S :
Certaine application utilisent ces flux pour logger des infos, ce qui pourrait bloquer le programme s'il ne sont ni lu ni fermé...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Process p = Runtime.getRuntime().exec("cmd /c start http://site.com/page.html"); p.getInputStream().close(); p.getOutputStream().close(); p.getErrorStream().close();
a++
En effet en utilisant JDIC avec un seul code, c'est valide pour la plupart des plateformes.
Le défaut de JDIC, c'est quand même que ca nécessite de recourir à une library native, ce qu'en général je préfère éviter.
Dans le cas des navigateur windows, aucun à ma connaissance n'utilise les flux standards, c'est pourquoi, j'ai ommis la fermeture.
Salut à tous
faut-il prendre la même précaution quand on fait :
Merci d'avance..
Code : Sélectionner tout - Visualiser dans une fenêtre à part Runtime.getRuntime().exec("cmd /c start http://site.com/page.html");
Es-tu sûr de pouvoir affirmer que cette commande n'écrira jamais rien dans dans ses flux de sortie ? Perso je n'en sais rien... surtout que le navigateur lancé pourrait changer d'une machine à l'autre...
Il faut toujours traiter les flux de sorties du process (et les fermer est une manière de les traiter). Si ce n'est pas fait et que la commande écrit dans ses flux de sortie, elle écrira en réalité dans un buffer (de très petite taille), et lorsque ce buffer sera plein le programme sera bloqué en écriture en attendant que le buffer soit vidé (par l'application Java) blocage puisque ton programme ne traite pas les E/S !
Plus d'info : Exécuter une application externe en Java
a++
Je viens de voir que pour Linux il y a bien un equivalent standard de la commande start c'est xdg-open.
Ca serait plus propre que de lancer simplement firefox car tu n'as aucune garantie qu'il soit installé et accessible du path. De plus le navigateur par défaut pourrait très bien être Konqueror, Opéra, Lynx, ... , ou même une autre version de FF installée manuellement.
Par contre sur Linux, il est important de fermer les flux comme l'explique adiGuba, car quasiment toutes les applications les utilisent.
Donc soit:
- Tu utilise JDIC et tu as un seul code
- Soit tu fais un Runtime.exec("cmd /c start http://url.du.site") pour Windows NT et 9x et Runtime.exec("xdg-open http://url.du.site") sous Linux
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager