2010-02-24 7 views
1

J'utiliseOuvrez le fichier HTML dans le navigateur depuis Java. Bug si le navigateur n'est pas démarré?

java.awt.Desktop.getDesktop().browse(uri); 

pour montrer mes utilisateurs un fichier HTML généré. Tout va bien si le navigateur (firefox 3.5.7; linux) est démarré avant de faire l'appel. Mais si le démarrage du navigateur est déclenché à partir de l'appel de recherche getDesktop()., L'application Java ne se fermera pas tant que le navigateur ne sera pas fermé.

Comment puis-je éviter ce comportement? Est-ce connu sous windows/macOsx aussi?

(Si je force puis la sortie de l'application Java du navigateur fermera aussi, et parfois même accident !?)

Répondre

2

La raison pour laquelle le navigateur existe est parce que le navigateur est lancé comme un processus dépendant ... donc lorsque le premier processus s'arrête, tous ses processus dépendants sont fermés avec lui. Mais dans le cas où vous démarrez le navigateur en premier, il a déjà un ID de processus différent qui n'est pas affecté par votre application. Je pense que la seule façon d'éviter ce comportement est d'utiliser une technique différente (peut-être Runtime.exec()?) Pour lancer le navigateur d'une manière qui l'enregistre comme un processus non dépendant.

+0

Oui, merci! ça a fait l'affaire. J'utilise maintenant le code ici: http://www.centerkey.com/java/browser/ (bien sûr, sans la version de secours à jse6 ou je me rabat sur jse6 si les autres appels ne fonctionnent pas :-)) – Karussell

0

Le projet Browser Launcher (http://browserlaunch2.sourceforge.net/) peut être la solution à votre problème. Vous pouvez lancer un navigateur à partir de votre code comme ceci:

String url = "http://...."; 
BrowserLauncher() launcher = new edu.stanford.ejalbert.BrowserLauncher(); 
launcher.openURLinBrowser(url); 
Questions connexes