How do you invoke the default browser in Java

MidnightJava

Registered
Does anyone know the Java code to display a URL in the default browser? I found a javaworld article on doing this using Runtime.getRuntime().exec(cmd). The article gives the cmd string for invoking the default browser in Windows, and for invoking the Netscape browser in Unix. THis can easily be extended to invoke any known browser in a known path on a Unix system; but I'd like to invoke the default browser without knowing what or where it is.

What this boils down to is that I need to know the Terminal command for launching the default browser to display the contents of a given URL. Or someone may know an alternative approach, rather than invoking exec().

-Mark
 
After extensive searching on Google, I found a solution. The code below invokes the default browser for a PC or Mac system, and provides an elegant solution for sequentially trying various known browsers on other Unix systems. A more robust implementation is provided as a SourceForge project and can be found at http://sourceforge.net/projects/browserlaunch2/.

Here's the simplified code:


/////////////////////////////////////////////////////////
// Bare Bones Browser Launch //
// Version 1.5 //
// December 10, 2005 //
// Supports: Mac OS X, GNU/Linux, Unix, Windows XP //
// Example Usage: //
// String url = "http://www.centerkey.com/"; //
// BareBonesBrowserLaunch.openURL(url); //
// Public Domain Software -- Free to Use as You Like //
/////////////////////////////////////////////////////////

import java.lang.reflect.Method;
import javax.swing.JOptionPane;

public class BareBonesBrowserLaunch {

private static final String errMsg = "Error attempting to launch web browser";

public static void openURL(String url) {
String osName = System.getProperty("os.name");
try {
if (osName.startsWith("Mac OS")) {
Class fileMgr = Class.forName("com.apple.eio.FileManager");
Method openURL = fileMgr.getDeclaredMethod("openURL",
new Class[] {String.class});
openURL.invoke(null, new Object[] {url});
}
else if (osName.startsWith("Windows"))
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
else { //assume Unix or Linux
String[] browsers = {
"firefox", "opera", "konqueror", "epiphany", "mozilla", "netscape" };
String browser = null;
for (int count = 0; count < browsers.length && browser == null; count++)
if (Runtime.getRuntime().exec(
new String[] {"which", browsers[count]}).waitFor() == 0)
browser = browsers[count];
if (browser == null)
throw new Exception("Could not find web browser");
else
Runtime.getRuntime().exec(new String[] {browser, url});
}
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, errMsg + ":\n" + e.getLocalizedMessage());
}
}

}
 
Back
Top