kingsleylong 发表于 2013-1-28 18:11:57

[转载]使用Java跨平台调用本地浏览器

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}).waitFor() == 0) {                           browser = browsers;                     }                   }                   if (browser == null) {                     throw new Exception("Could not find web browser");                   } else {                     Runtime.getRuntime().exec(new String[]{browser, url});                   }               }         } catch (Exception ex) {               ex.printStackTrace();         }       }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}).waitFor() == 0) {                        browser = browsers;                  }                }                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.csdn.net/casularm"), "_blank");

本文转载自:http://blog.csdn.net/casularm/archive/2008/11/28/3401018.aspx
页: [1]
查看完整版本: [转载]使用Java跨平台调用本地浏览器