Quelle commande nous devons exécuter (à partir de Java, mais cela ne devrait pas importer) sur Linux (différentes distributions communes) pour ouvrir une URL donnée dans le navigateur par défaut?
Le plus répandu est xdg-open http://stackoverflow.com
Je crois que la méthode la plus simple serait d’utiliser Python:
python -m webbrowser "http://www.example.com/"
sur Ubuntu, vous pouvez essayer gnome-open.
$ gnome-open http://www.google.com
Dans Java (version 6+), vous pouvez également effectuer les tâches suivantes:
Desktop d = Desktop.getDesktop();
d.browse(uri);
Bien que cela ne fonctionne pas sur tous les Linux. Au moment de la rédaction de ce document, Gnome est pris en charge, pas KDE.
Au moins sur Debian et tous ses dérivés, il existe un script Shell 'navigateur sensible' qui choisit le navigateur le mieux adapté à l'URL donnée.
Je pense en utilisant xdg-open http://example.com
est probablement le meilleur choix.
Au cas où ils ne l'auraient pas installé, je suppose qu'ils auraient peut-être juste kde-open
ou gnome-open
(qui prennent tous deux un seul fichier/url) ou une autre solution de contournement telle que la boucle sur les noms d’exécutables de navigateur courants jusqu’à ce que vous en trouviez un qui peut être exécuté (avec lequel). Si vous voulez une liste complète des solutions de contournement/solutions de remplacement, je vous suggère de lire xdg-open (c'est un script Shell qui appelle kde-open/gnome-open/etc. Ou une autre solution de secours).
Mais puisque xdg-open et xdg-mime (utilisés pour l’une des solutions de rechange) sont des scripts Shell, je vous recommande de les inclure dans votre application et si vous appelez which xdg-open
ne réussit pas à les ajouter à la variable temporaire PATH dans votre environnement de sous-programmes et à les appeler. Si xdg-open échoue, je vous conseillerais de lancer une exception avec un message d'erreur à partir de ce qu'elle a affiché sur stderr, de capturer l'exception et d'afficher/imprimer le message d'erreur.
J'ignorerais la solution Java awt Desktop car le bogue semble indiquer qu'ils ne prévoient pas de prendre en charge des ordinateurs de bureau autres que des gnomes dans un avenir proche.
sensible-browser [options] [URL or filename]; # Said to be the best.
# Server translates to:
echo $BROWSER;
w3m [options] [URL or filename]
# Desktop (X11): I use/prefer,
x-www-browser http://tv.jimmylandstudios.com
Je pense qu'une combinaison de xdg-open telle que décrite par shellholic et - si elle échoue - de trouver un navigateur utilisant la commande which
telle que décrite ici est probablement la meilleure solution.
Sur les distributions qui viennent avec la commande open,
$ open http://www.google.com