Comment déléguer l'ouverture d'un fichier au navigateur
En développant une petite application en Swing servant d’explorateur de fichiers sur un WebDav, je me suis rendu compte qu’il aurait été sympa de visualiser les fichiers distants. Plutôt que de télécharger en local, puis d’utiliser Windows pour rechercher ce fichier et double-cliquer dessus, pourquoi ne pas s’appuyer sur le navigateur pour gérer le content-type. La question est : comment passer la patate chaude au navigateur depuis une application en Java?
Je me suis appuyé sur cet excellent article : Java Tip 66 et cette librairie : BrowserLauncher
import java.util.List; |
Et voilà, c’est tout bête. Je vous encourage à aller visiter le site de BrowserLauncher ainsi que son API bien fournie.
Avec java.awt.Desktop (Java 6+)
Depuis Java 6, la classe java.awt.Desktop permet de déléguer l’ouverture d’URI au navigateur par défaut du système, sans aucune librairie externe. BrowserLauncher est aujourd’hui obsolète.
import java.awt.Desktop; |
La méthode browse(URI) ouvre l’URI dans le navigateur par défaut enregistré dans le système d’exploitation. Desktop gère aussi mail(URI), open(File) (ouvre le fichier avec l’application associée), et print(File).
Détection du navigateur par défaut
Sous Windows, le navigateur par défaut est lu dans la registry. Sous Linux, Desktop respecte les associations freedesktop.org (xdg-open). Vous pouvez aussi interroger le système :
// Alternative : lancer xdg-open directement |
Note sur BrowserLauncher
BrowserLauncher (et sa version 2) était une excellente solution à l’époque, mais n’est plus maintenue depuis des années. Préférez java.awt.Desktop pour tout projet Java 6+ - moins de dépendances, plus simple, et maintenu par le JDK lui-même.