J2SE 6 新增了 java.awt.Desktop ,这套桌面 API 使用你的主机操作系统的文件关联以启动与特定文件类型相关联的应用程序。调用本地浏览器非常方便,且跨平台适用。
- public static void runBroswer(String webSite) {
- try {
- Desktop desktop = Desktop.getDesktop();
- if (desktop.isDesktopSupported() && desktop.isSupported(Desktop.Action.BROWSE)) {
- URI uri = new URI(webSite);
- desktop.browse(uri);
- }
- } catch (IOException ex) {
- ex.printStackTrace();
- } catch (URISyntaxException ex) {
- ex.printStackTrace();
- }
- }
J2SE 5及之前可使用以下代码
- public static void openURL(String url) {
- String osName = System.getProperty("os.name" );
- try {
- if (osName.startsWith( "Mac" )) { //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" )) { //Windows
- Runtime.getRuntime().exec(
- "rundll32 url.dll,FileProtocolHandler " + url);
- } else { //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 ex) {
- ex.printStackTrace();
- }
- }
如果是Applet则用以下代码直接访问链接
- AppletContext context = getAppletContext();
- context.showDocument(new URL( "http://blog.youkuaiyun.com/casularm" ), "_blank" );