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();
}
}
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.csdn.net/casularm"), "_blank");
本文转载自:
http://blog.csdn.net/casularm/archive/2008/11/28/3401018.aspx
分享到:
相关推荐
如果你希望在代码中保持平台独立性,可以使用Apache Commons Lang库中的`Desktop`类,它提供了跨平台的方式来启动浏览器: ```java import org.apache.commons.lang3.SystemUtils; if (SystemUtils.IS_OS_WINDOWS)...
7. **跨平台兼容**:由于DJnative-SWT和SWT的设计,虽然使用了本地浏览器引擎,但整个应用仍能在不同平台上运行,只需确保对应平台支持WebKit。 通过这个示例,开发者不仅可以学习如何在Java Swing应用中嵌入浏览器...
这里提到的"Java嵌入谷歌内核简单浏览器跨平台"项目,显然是利用了谷歌浏览器的渲染引擎(Chromium)来创建一个能够在Java环境中运行的浏览器组件。这个组件名为JxBrowser,它允许Java开发者在他们的应用中无缝集成...
然而,它们并不直接支持调用浏览器内核。Applet是一种嵌入到HTML中的小程序,可以通过Java插件在浏览器中运行,但随着现代浏览器逐渐淘汰Java插件,这种方式已不再推荐。 2. **ActiveX控件:** 要在Java中调用IE...
总之,Java调用浏览器打开URL地址主要依赖于`java.awt.Desktop`类的`browse()`方法,这是一种跨平台且易于使用的解决方案。如果需要更精细的控制,可以考虑使用特定浏览器的命令行接口。在实际开发中,确保对各种...
Java CEF调用Chrome浏览器是一种技术方案,它允许Java应用程序利用CEF(Chromium Embedded Framework)来集成Chrome浏览器引擎,从而实现更丰富的Web交互和硬件加速功能。CEF是一个开源框架,它封装了Google Chrome...
跨平台使用swing调用浏览器,由于现在很多的机器的jre或者jdk都是1.5版本及以下的不能使用jdk 1.6 desktop类。
综上所述,"使用Java开发的浏览器,基于Chromium"是一个涉及多领域知识的项目,包括Java编程、GUI设计、网络编程、安全性、性能优化和跨平台技术等。开发者需要对这些领域有深入理解,才能构建出高效、安全、易用的...
Java基于IE内核的网页浏览器是一种使用Java编程语言开发的软件,它利用Internet Explorer的内核来渲染和解析网页...尽管IE内核逐渐被淘汰,但了解这种浏览器的实现方式有助于我们理解跨平台编程和浏览器开发的复杂性。
Java调用OCX控件是跨平台编程中的一项技术挑战,因为OCX(Object Linking and Embedding Control)是微软Windows环境下的组件对象模型(COM)控件。然而,通过第三方库如Jacob(Java和COM的桥梁),Java开发者能够在...
总的来说,Java提供了简单而强大的工具来实现跨平台的浏览器启动功能。`java.awt.Desktop`类使得开发者能够轻松地将这一功能集成到他们的应用程序中,无论用户是在Windows、Mac OS还是Linux上运行程序。只要注意操作...
浏览器之间的差异主要体现在渲染引擎的实现上,例如Firefox使用Gecko,Chrome和Safari使用WebKit(Chrome后来分出了Blink引擎)。这些差异可能导致页面在不同浏览器上的表现不一致,因此Web开发者需要考虑浏览器兼容...
Java编写的网络浏览器是一款创新性的软件,它利用Java这一跨平台的编程语言,实现了与传统浏览器类似的功能。本文将深入探讨Java在构建网络浏览器时所涉及的关键技术和知识点。 首先,我们要明白Java是一种面向对象...
用户可能需要手动开启全屏模式,或者使用JavaScript在页面加载时触发全屏,但这超出了Java调用浏览器的范畴。 总的来说,Java调用浏览器的关键在于理解如何与操作系统进行交互,以及利用标准API提供的功能。对于更...
- **跨平台兼容性**:尽管JNI依赖于特定的操作系统,但Java本身是跨平台的,因此通过适当的本地库适配,这种控件可以在多种操作系统上运行。 5. **挑战与注意事项**: - **性能**:由于涉及到Java与本地代码的...
此外,跨平台兼容性也是需要关注的问题,因为不同的操作系统可能使用不同版本的WebKit,并且可能有特定的API限制。 总结来说,Java集成WebKit浏览器是一项通过SWT和第三方库实现的技术,它使得Java应用能够具备强大...
4. **Web API和桌面桥接**:Web应用程序可以通过JavaScript调用Web API,比如Electron框架允许创建跨平台的桌面应用,它结合了Node.js和Chromium,使得Web应用可以调用本地系统API。此外,Microsoft的Edge WebView2...
NPAPI是早期广泛用于创建跨平台浏览器插件的接口,如Adobe Flash、Java等都曾依赖它。然而,由于安全问题,现代浏览器如Chrome已经逐步弃用了NPAPI,转而支持更安全的PPAPI(Pepper Plugin API)或其他内建的扩展...
5. **跨平台兼容性**:由于SWT是基于操作系统的,因此DJNativeSwing的内嵌浏览器在不同平台上可能会有不同的表现。开发者需要考虑如何确保应用在不同操作系统上具有一致的用户体验。 6. **性能和稳定性**:内嵌...
Java扫描仪接口调用源码涉及的技术点广泛,主要涵盖了Java与硬件设备交互、服务器部署以及Web...通过这个项目,可以深入学习Java的跨平台能力以及与硬件设备的交互方式,同时也能提升Web应用开发和服务器运维的技能。