Chinaunix首页 | 论坛 | 博客
  • 博客访问: 423125
  • 博文数量: 155
  • 博客积分: 2590
  • 博客等级: 少校
  • 技术积分: 2161
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-25 09:33
文章分类

全部博文(155)

文章存档

2015年(1)

2014年(2)

2013年(55)

2012年(97)

分类: LINUX

2012-11-14 10:27:26

最近在做一个项目,是在debian的linux环境下用java开发的,因为系统没有安装图形界面,于是采用调用浏览器显示特定网页来实现的方案。

       现在可以找到的java调用linux浏览器的方法主要有3种,

       第一种是调用桌面默认浏览器的办法,如下所示:    

  1. public static void openURL(String sURL) {  
  2.          try {  
  3.              URI uri = new URI(sURL);  
  4.              Desktop desktop = null;  
  5.              if (Desktop.isDesktopSupported()) {  
  6.                  desktop = Desktop.getDesktop();  
  7.              }  
  8.              if (desktop != null)  
  9.                  desktop.browse(uri);  
  10.         } catch (IOException ioe) { 
  11.             ioe.printStackTrace();  
  12.         } catch (URISyntaxException e){  
  13.             e.printStackTrace();  
  14.         }  
  15.      }  
      第二种是runtime的办法,如下:
[java] view plaincopy
 
  1. public static void openURLRuntime(String url) {  
  2.            try {  
  3.             Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);  
  4.            } catch (Exception ex) {  
  5.                //ex.printStackTrace();  
  6.            }  
  7.      }  
    第三种和第二种差不多,但是可以先判断浏览器的类型,如下:
  1. private static void openURLlinux(String url) throws Exception {  
  2.             //获取操作系统的名字    
  3.             String osName = System.getProperty("os.name""");   
  4.             String[] browsers = { "google-chrome","firefox""opera""konqueror""epiphany""mozilla""netscape" };   
  5.             String browser = null;  
  6.             for (int count = 0; count < browsers.length && browser == null; count++){  
  7.                 System.out.print( "find:"+count+"\n");  
  8.                 //执行代码,在brower有值后跳出  
  9.                 //这里是如果进程创建成功了,==0是表示正常结束。    
  10.                 if (Runtime.getRuntime().exec(new String[] {   
  11.                         "which", browsers[count] }).waitFor() == 0){  
  12.                     browser = browsers[count];  
  13.                     System.out.print( "find browser:"+browser+"\n");  
  14.                 }  
  15.                 if (browser == null)  
  16.                     System.out.print( "Could not find web browser");  
  17.                 else  
  18.                     //这个值在上面已经成功的得到了一个进程。    
  19.                     Runtime.getRuntime().exec(new String[] {browser, url});  
  20.             }  
  21.      }  
      不过,可惜的是上边三种方法都没有成功调出浏览器,虽然我在ubuntu上的测试没问题,但是在那个debian上一直不行,于是就想办法,后来找到一个办法,实现调出浏览器的功能,代码如下:
  1. String openChrome="curl ";    //调用浏览器  
  2. Runtime.getRuntime().exec(openChrome);  
      这个办法可以启动chrome浏览器,但是无法打开特定的网址,于是就采用了一个神一样的办法,设置chrome的默认首页,这样打开浏览器就是那个页面,当然这个办法比较弱智,但还是实现功能了。所以在这里分享一下,供大家参考。

     另外如果有更好地解决办法,欢迎交流,QQ:1776401548。

原文地址:

阅读(800) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~