最近在做一个项目,是在debian的linux环境下用java开发的,因为系统没有安装图形界面,于是采用调用浏览器显示特定网页来实现的方案。
现在可以找到的java调用linux浏览器的方法主要有3种,
第一种是调用桌面默认浏览器的办法,如下所示:
[java] view plaincopy
- public static void openURL(String sURL) {
- try {
- URI uri = new URI(sURL);
- 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();
- }
- }
- public static void openURLRuntime(String url) {
- try {
- Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
- } catch (Exception ex) {
- //ex.printStackTrace();
- }
- }
[java] view plaincopy
- private static void openURLlinux(String url) throws Exception {
- //获取操作系统的名字
- String osName = System.getProperty("os.name", "");
- String[] browsers = { "google-chrome","firefox", "opera", "konqueror", "epiphany", "mozilla", "netscape" };
- String browser = null;
- for (int count = 0; count null; count++){
- System.out.print( "find:"+count+"\n");
- //执行代码,在brower有值后跳出
- //这里是如果进程创建成功了,==0是表示正常结束。
- if (Runtime.getRuntime().exec(new String[] {
- "which", browsers[count] }).waitFor() == 0){
- browser = browsers[count];
- System.out.print( "find browser:"+browser+"\n");
- }
- if (browser == null)
- System.out.print( "Could not find web browser");
- else
- //这个值在上面已经成功的得到了一个进程。
- Runtime.getRuntime().exec(new String[] {browser, url});
- }
- }
- String openChrome="curl http://localhost:8080/runapplication=google-chrome"; //调用浏览器
- Runtime.getRuntime().exec(openChrome);
另外如果有更好地解决办法,欢迎交流,QQ:1776401548。