如何使用java打开默认的浏览器
有人能指出我如何打开默认的网页浏览器的正确方向,并将页面设置为“www.example.com”谢谢
java.awt.Desktop
是你正在寻找的类。
import java.awt.Desktop; import java.net.URI; // ... if(Desktop.isDesktopSupported()) { Desktop.getDesktop().browse(new URI("http://www.example.com")); }
这是我的代码。 它会在默认浏览器中打开给定的URL(跨平台解决scheme)。
import java.awt.Desktop; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; public class Browser { public static void main(String[] args) { String url = "http://www.google.com"; if(Desktop.isDesktopSupported()){ Desktop desktop = Desktop.getDesktop(); try { desktop.browse(new URI(url)); } catch (IOException | URISyntaxException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ Runtime runtime = Runtime.getRuntime(); try { runtime.exec("xdg-open " + url); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
对于我解决与Desktop.isDesktopSupported()不起作用(Windows 7和Ubuntu的)。 请尝试从java代码打开浏览器:
视窗:
Runtime rt = Runtime.getRuntime(); String url = "http://stackoverflow.com"; rt.exec("rundll32 url.dll,FileProtocolHandler " + url);
苹果电脑
Runtime rt = Runtime.getRuntime(); String url = "http://stackoverflow.com"; rt.exec("open " + url);
Linux的:
Runtime rt = Runtime.getRuntime(); String url = "http://stackoverflow.com"; String[] browsers = { "epiphany", "firefox", "mozilla", "konqueror", "netscape", "opera", "links", "lynx" }; StringBuffer cmd = new StringBuffer(); for (int i = 0; i < browsers.length; i++) if(i == 0) cmd.append(String.format( "%s \"%s\"", browsers[i], url); else cmd.append(String.format(" || %s \"%s\"", browsers[i], url); // If the first didn't work, try the next browser and so on rt.exec(new String[] { "sh", "-c", cmd.toString() });
如果您想要有多平台应用程序,则需要添加操作系统检查(例如):
String os = System.getProperty("os.name").toLowerCase();
视窗:
os.indexOf("win") >= 0
苹果电脑:
os.indexOf("mac") >= 0
Linux的:
os.indexOf("nix") >=0 || os.indexOf("nux") >=0
您也可以使用Runtime来创build跨平台解决scheme:
import java.awt.Desktop; import java.net.URI; public class App { public static void main(String[] args) throws Exception { String url = "http://stackoverflow.com"; if (Desktop.isDesktopSupported()) { // Windows Desktop.getDesktop().browse(new URI(url)); } else { // Ubuntu Runtime runtime = Runtime.getRuntime(); runtime.exec("/usr/bin/firefox -new-window " + url); } } }
正如Tim Cooper提供的答案中所指出的那样, java.awt.Desktop
从Java版本6(1.6)开始就提供了这种function,但有以下警告:
使用isDesktopSupported()方法来确定桌面API是否可用。 在Solaris操作系统和Linux平台上,此API依赖于Gnome库。 如果这些库不可用,则此方法将返回false。
对于不支持或提供java.awt.Desktop
平台,请查看BrowserLauncher2项目。 它由Eric Albert最初编写和发布的BrowserLauncher类派生并稍微更新。 在21世纪初,我在一个多平台的Java应用程序中成功地使用了原始的BrowserLauncher类,该应用程序在本地通过Web浏览器界面运行。
请注意,BrowserLauncher2是根据GNU宽松通用公共许可证授权的 。 如果该许可证不可接受,请查找具有非常自由许可证的原始BrowserLauncher的副本:
此代码由Eric Albert(ejalbert@cs.stanford.edu)版权所有1999-2001,并且可以以任何forms重新分发或修改,不受任何限制,只要本评论的部分从本段到评论末尾不被删除。 作者要求他通知使用这个代码的任何应用程序,小应用程序或其他二进制文件,但是这比其他任何东西都好奇,并不是必需的。 该软件不包含保修。 作者不负责任何数据或function的丢失或使用此软件的任何不利或意想不到的影响。
学分:JavaWorld杂志(Java Tip 66)的Steven Spencer也感谢Ron B. Yeh,Eric Shapiro,Ben Engber,Paul Teitlebaum,Andrea Cantatore,Larry Barowski,Trevor Bedzek,Frank Miedrich和Ron Rabakukk
除了BrowserLauncher2之外的其他项目也可能更新了原始的BrowserLauncher,以便考虑到自2001年以来浏览器和默认系统安全设置的更改。
它很简单,只需写下面的代码:
String s = "http://www.google.com"; Desktop desktop = Desktop.getDesktop(); desktop.browse(URI.create(s));
或者如果你不想加载URL,那就把你的浏览器名称写入string值,
String s = "chrome"; Desktop desktop = Desktop.getDesktop(); desktop.browse(URI.create(s));
执行程序后会自动用空的URL打开浏览器
在窗口调用“CMD / K启动http://www.example.com ”事实上,你总是可以使用启动命令调用“默认”程序。 为了开始abc.mp3将调用默认的MP3播放器,并加载所请求的MP3文件。