Browser aus Java Applikation starten

Häufig möchte man aus einem Java Programm heraus den Browser starten. Dabei soll eine bestimmte URL mit übergeben und geöffnet werden. Bis Java 1.6 gab es keine direkt mitgelieferte Möglichkeit den Default Browser mit einer übergebenen URL oder einem Filepath zu starten. Als Workaround wurde häufig der Tip unter http://www.javaworld.com/javaworld/javatips/jw-javatip66.html empfohlen.

Eine eigene, recht primitive Implementation könnte so aussehen. (Funktioniert in den meisten Fällen)

public class LaunchBrowser {
    static String url;
    //wir starten eine lokale HTML Seite. Modifikation für
    //Webanwendung sollte leicht sein.
    public LaunchBrowser( String url_in )
    {
    url = "file://" +url_in;
    }

public static void launch() {
    try {
        if (isWindows()) {
            Runtime.getRuntime().exec( "rundll32 url.dll,FileProtocolHandler "
            + url );
        } else {
            Runtime.getRuntime().exec("firefox " + url);
        }
    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
}

//Test auf Windows
public static boolean isWindows() {
    String os = System.getProperty("os.name");
        if ( os != null && os.startsWith("Windows")) {
        return true;
    } else {
        return false;
    }
}

Seit Java 6 empfiehlt es sich die Klasse java.awt.Desktop zu verwenden. Damit lassen sich u.a. die Default Applikationen mit übergebenen Filenamen bzw. URLs starten. Eine feine Sache, die vieles ein wenig leichter macht. Auf folgenden Seiten sollten sich hierzu alle notwendigen Tips finden:

http://www.tutego.com/blog/javainsel/2006/08/die-neue-klasse-javaawtdesktop.html
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/
http://java.sun.com/javase/6/docs/api/java/awt/Desktop.html

1 comment to Browser aus Java Applikation starten

  • Hajo Keffer

    Super, genau, was ich gesucht habe! Aber warum verwendest Du statische Variablen und Methoden? Das ist nicht sehr objektorientiert. Hier ist meine Version:

    import java.io.IOException;

    public class WebBrowser {

    private String url;

    public WebBrowser(final String url_in) {
    url = “http://” url_in;
    }

    public void launch() {
    try {
    if (isWindows()) {
    Runtime.getRuntime().exec(
    “rundll32 url.dll,FileProtocolHandler ” this.url);
    } else {
    Runtime.getRuntime().exec(“firefox ” url);
    }
    } catch (IOException ioe) {
    ioe.printStackTrace();
    }

    }

    // Test for Windows
    public static boolean isWindows() {
    String os = System.getProperty(“os.name”);
    if (os != null && os.startsWith(“Windows”)) {
    return true;
    } else {
    return false;
    }
    }
    // for testing
    public static void main(String [] args) {
    WebBrowser web = new WebBrowser(“www.gmx.de”);
    web.launch();
    }
    }

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>