2011-06-30 76 views
1

我試圖從Java應用程序在瀏覽器中打開一個URI。我知道在當前版本的Java中,這可以通過使用java.awt.Desktop完成,但該類在Java的早期版本中不可用,例如1.5,這正是我正在使用的。有沒有辦法在早期版本的Java中使用給定的URI打開默認瀏覽器?用舊版Java打開瀏覽器

回答

3

我想這應該做的伎倆

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()); 
     } 
    } 
}