admin 管理员组文章数量: 1184232
window
Runtime rt = Runtime.getRuntime();
String url = "http://stackoverflow";
rt.exec("rundll32 url.dll,FileProtocolHandler " + url);
Mac
Runtime rt = Runtime.getRuntime();
String url = "http://stackoverflow";
rt.exec("open " + url);
Linux
Runtime rt = Runtime.getRuntime();
String url = "http://stackoverflow";
String[] browsers = { "google-chrome", "firefox", "mozilla", "epiphany", "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();
Windows:
os.indexOf("win") >= 0
Mac:
os.indexOf("mac") >= 0
Linux:
os.indexOf("nix") >=0 || os.indexOf("nux") >=0
说明
Linux的不足之处
上述方案中,Linux中的列出所有的浏览器,是非常不好的解决方案。
可以考虑在Linux中安装xdg-open,接着就可以像mac那样来使用啦。
window方案的原理
1.利用java运行时环境和windows系统应用程序
首先我们都知道,在Windows中浏览器可以用来打开很多不同的文件,比如网页,txt和pdf等等(前提是你的系统注册了相关软件)。
那么IE是通过什么方式来实现不同文件用不同软件来打开呢?
其实它有一个叫url.dll 的动态链接库,url.dll提供了IE调用 各种应用来打开不同文件的实现。既然IE提供了这样一个功能,我们就可以在java程序中利用它。
那么,我们如何在java程序中调用动态链接库呢? 我们知道,windows系统提供了一个叫Rundll32.exe的文件,它的作用是执行DLL文件中的内部函数,这样在进程当中,只会有rundll32.exe,而不会有DLL后门的进程,这样,就实现了进程上的隐藏。
rundll32.exe的具体使用方法如下:
Rundll32.exe [DLLname],[Functionname]
说明:
DLLname为需要执行的DLL文件名;Functionname为前边需要执行的DLL文件的具体引出函数;- [Arguments]为引出函数的具体参数。
结合url.dll和rundll32.exe,我们就可以通过在命令行中启动相应程序打开相应文档: 假设我有一个pdf文档,存放在c: est.pdf 。打开命令行, 运行如下 命令:
rundll32 url.dll FileProtocolHandler file://c: est.pdf
参考地址:
How to open the default webbrowser using java
https://blog.csdn/u014214965/article/details/84764018
版权声明:本文标题:如何用Java打开默认的浏览器 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1753492479a2899216.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论