参考:http://blog.csdn.net/w627782664/article/details/7163044
http://www.cnblogs.com/ayan/archive/2011/12/29/2306805.html
方法一: 不使用java.awt.Desktop 方法 不跨平台
String url = "http://www.google.com/";
2 BareBonesBrowserLaunch.openURL(url);
BareBonesBrowserLaunch.java
的源码
/////////////////////////////////////////////////////////
//Bare Bones Browser Launch
//
//Version 1.5 (December 10, 2005)
//
//By Dem Pilafian
//
//支持: Mac OS X, GNU/Linux, Unix, Windows
XP//
//可免费使用
//
/////////////////////////////////////////////////////////
import java.io.IOException;
import
java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javax.swing.JOptionPane;
public class BareBonesBrowserLaunch {
public
static void openURL(String url) {
try {
browse(url);
} catch (Exception e) {
}
}
private static void browse(String url) throws
Exception {
//获取操作系统的名字
String osName =
System.getProperty("os.name", "");
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")) {
//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++)
//执行代码,在brower有值后跳出,
//这里是如果进程创建成功了,==0是表示正常结束。
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 });
}
}
}
方法二:
使用Java SE 6.0的新功能
比这样先判断操作系统类型再执行特定操作方便多了
,因为java.awt.Desktop类的java.awt.Desktop.isDesktopSupported()可以获取当前系统是否支持java awt桌面扩展.如果支持可以获取当前系统的Desktop
- import java.awt.Desktop;
- import java.io.IOException;
- import java.net.URI;
- import java.net.URISyntaxException;
-
- public class TestBrowse {
- public static void main(String[] a) {
- try {
-
URI uri = new URI("http://www.baidu.com");
-
Desktop desktop = null;
-
if (Desktop.isDesktopSupported()) {
-
desktop = Desktop.getDesktop();
-
}
-
if (desktop != null)
-
desktop.browse(uri);
-
} catch (IOException ioe) {
-
ioe.printStackTrace();
-
} catch (URISyntaxException e) {
-
e.printStackTrace();
-
}
-
}
- }
加载中,请稍候......