117 votes

Comment ouvrir le navigateur par défaut en utilisant java ?

Quelqu'un peut-il m'indiquer comment ouvrir le navigateur Web par défaut et définir la page de "www.example.com" merci

2 votes

Question dupliquée : stackoverflow.com/q/10967451/873282

1 votes

174voto

Tim Cooper Points 55292

java.awt.Desktop est la classe que vous recherchez.

import java.awt.Desktop;
import java.net.URI;

// ...

if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
    Desktop.getDesktop().browse(new URI("http://www.example.com"));
}

3 votes

S'agit-il d'une solution multiplateforme ou uniquement Windows ? D'autres réponses dans ce fil de discussion suggèrent d'utiliser la classe Runtime pour Linux.

0 votes

@lgal, cela a fonctionné pour moi à la fois sur Windows 7 et Linux (Ubuntu 10.10). Il ouvre toujours le navigateur par défaut du système (IE sur Win7 et Firefox sur Ubuntu, dans mon cas).

1 votes

Ça ne marche pas pour moi. La méthode IsDesktopSupported renvoie toujours false sur ma machine Windows. Quel est le problème ?

40voto

Brajesh Kumar Points 437

Voici mon code. Il va ouvrir l'url donnée dans le navigateur par défaut (solution multiplateforme).

import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

public class Browser {
    public static void main(String[] args) {
        String url = "http://www.google.com";

        if(Desktop.isDesktopSupported()){
            Desktop desktop = Desktop.getDesktop();
            try {
                desktop.browse(new URI(url));
            } catch (IOException | URISyntaxException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }else{
            Runtime runtime = Runtime.getRuntime();
            try {
                runtime.exec("xdg-open " + url);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

2 votes

"'xdg-open' n'est pas reconnu comme une commande interne ou externe, un programme exploitable ou un fichier batch."

10 votes

C'est une commande Unix. Que faites-vous en l'exécutant sous Windows ?

7 votes

En plus de 'Desktop.isDesktopSupported()', vérifiez également 'Desktop.getDesktop().isSupported(Action.BROWSE)'.

6voto

Ned Nowotny Points 699

Comme indiqué dans la réponse fournie par Tim Cooper, java.awt.Desktop offre cette possibilité depuis la version 6 (1.6) de Java, mais avec l'avertissement suivant :

Utilisez la méthode isDesktopSupported() pour déterminer si l'API de bureau est disponible. Sur le système d'exploitation Solaris et la plate-forme Linux, cette API dépend des bibliothèques Gnome. Si ces bibliothèques ne sont pas disponibles, cette méthode renvoie false.

Pour les plateformes qui ne prennent pas en charge ou ne fournissent pas java.awt.Desktop regardez dans le BrowserLauncher2 projet. Il est dérivé et quelque peu mis à jour du BrowserLauncher classe initialement écrite et publiée par Eric Albert. J'ai utilisé la classe BrowserLauncher originale avec succès dans une application Java multi-plateforme qui fonctionnait localement avec une interface de navigateur web au début des années 2000.

Notez que BrowserLauncher2 est soumis à la licence de la Licence publique générale amoindrie de GNU . Si cette licence est inacceptable, cherchez une copie du BrowserLauncher original qui a une licence très libérale :

Ce code est protégé par les droits d'auteur 1999-2001 d'Eric Albert (ejalbert@cs.stanford.edu) et peut être redistribué ou modifié sous n'importe quelle forme sans restriction tant que la partie de ce commentaire, de ce paragraphe à la fin du commentaire, n'est pas supprimée. L'auteur demande à être informé de toute application, applet ou autre binaire qui utilise ce code, mais c'est plus par curiosité qu'autre chose et ce n'est pas obligatoire. Ce logiciel ne comporte aucune garantie. L'auteur n'est pas responsable de toute perte de données ou de fonctionnalité ou de tout effet négatif ou inattendu de l'utilisation de ce logiciel.

Crédits : Steven Spencer, magazine JavaWorld (Java Tip 66) Merci également à Ron B. Yeh, Eric Shapiro, Ben Engber, Paul Teitlebaum, Andrea Cantatore, Larry Barowski, Trevor Bedzek, Frank Miedrich et Ron Rabakukk.

Des projets autres que BrowserLauncher2 peuvent également avoir mis à jour le BrowserLauncher original pour tenir compte des modifications apportées au navigateur et aux paramètres de sécurité du système par défaut depuis 2001.

0 votes

Le fork maintenu de BrowserLauncher2 est disponible à l'adresse suivante github.com/rajing/browserlauncher2

1 votes

Pour ceux qui cherchent à utiliser BrowserLauncher2 sur les Macs, ni le BrowserLauncher2 original ni le fork mentionné par @koppor ne fonctionnent avec Mac OS X Sierra. Les deux supposent l'existence d'une propriété système "mrj.version" qui apparemment n'existe plus. Le code lèvera une NullPointerException lorsque le lanceur sera construit. Voir sourceforge.net/p/browserlaunch2/bugs/14 pour de plus amples informations.

5voto

Benny Neugebauer Points 5393

Vous pouvez également utiliser le Temps d'exécution pour créer une solution multiplateforme :

import java.awt.Desktop;
import java.net.URI;

public class App {

    public static void main(String[] args) throws Exception {
        String url = "http://stackoverflow.com";

        if (Desktop.isDesktopSupported()) {
            // Windows
            Desktop.getDesktop().browse(new URI(url));
        } else {
            // Ubuntu
            Runtime runtime = Runtime.getRuntime();
            runtime.exec("/usr/bin/firefox -new-window " + url);
        }
    }
}

3 votes

/usr/bin/firefox n'est pas le nom standard du navigateur sur les plateformes non-Windows ! Ce pourrait être Chrome, ou Epiphany, ou une multitude d'autres navigateurs.

1voto

d-live Points 3464

Sous Windows, invoquez "cmd /k start". http://www.example.com " En fait, vous pouvez toujours invoquer des programmes "par défaut" en utilisant la commande start. Par exemple, la commande start abc.mp3 invoquera le lecteur mp3 par défaut et chargera le fichier mp3 demandé.

0 votes

Vous avez déjà posté la version portable. Je viens de proposer un autre solution qui pourrait être gardée à l'esprit si ce ne sont pas seulement les urls que vous devez ouvrir dans les programmes par défaut.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X