自己动手做J浏览器——基于JAVA和火狐内核(gecko)

网上有关于JAVA调用火狐内核的资料不多,而且比较杂乱。我在此处整理出JAVA调用火狐内核制作浏览器最简单的方案,以供参考。

教程中所涉及到需要下载的资源,都在代码示例中,如果您不想一个一个下载资源,可直接下载“代码示例”:

http://download.csdn.net/detail/ajaxhu/6394751


首先纠正一个误区,很多人认为JAVA调用火狐内核只需要导入相关JAR包就行了,这是错误的。火狐内核需要在XUL的基础上运行,所以我们需要安装并配置xulrunner。我会在后面的教程中一一说明。

我们先下载xulrunner,从官方链接下载:http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/1.8.1.3/contrib/win32/xulrunner-1.8.1.3.en-US.win32.zip。下载后解压到任意文件夹(我这里以桌面为例),我们打开cmd,找到解压后文件夹的位置,输入:

[plain]  view plain copy
  1. xulrunner --register-user  

回车完成xulrunner的安装。整个操作如下图所示:

自己动手做J浏览器——基于JAVA和火狐内核(gecko)_第1张图片

注意:有些人的操作系统可能是英文的,把上面指令中的“桌面”改成desktop:

cd desktop\xulrunner。

如果你做完上述操作,已经成功一半了。

我们这个浏览器的界面,采用的是org.eclipse.swt这一套的操作,需要导入这个jar包,这个jar包可以在你的eclipse安装路径文件夹中的plugins文件夹中找到:

也可以从这个链接去下载: 

http://download.csdn.net/detail/ajaxhu/6394647(建议直接从自己的eclipse\plugins文件夹中找)。

最后一步,打开eclipse,新建一个工程(这里叫javafox),将上面的org.eclipse.swt..................jar放到工程目录中,右键->add to build path。

新建一个Main.java,将如下代码粘贴进去,运行即可:

[java]  view plain copy
  1. import org.eclipse.swt.SWT;  
  2. import org.eclipse.swt.SWTError;  
  3. import org.eclipse.swt.browser.Browser;  
  4. import org.eclipse.swt.layout.*;  
  5. import org.eclipse.swt.widgets.*;  
  6. import java.io.IOException;  
  7. import java.io.InputStream;  
  8. import java.io.InputStreamReader;  
  9. import java.net.HttpURLConnection;  
  10. import java.net.URL;  
  11.   
  12.   
  13. public class Main {  
  14.     static Browser browser;  
  15.   
  16.     public static void main(String[] args) throws IOException {  
  17.         Display display = new Display();  
  18.         Shell shell = new Shell(display);  
  19.         shell.setLayout(new GridLayout(2true));  
  20.         shell.setText("Change DOM Value");  
  21.   
  22.         try {  
  23.             browser = new Browser(shell, SWT.MOZILLA);  
  24.         } catch (SWTError e) {  
  25.             System.out.println("Could not instantiate Browser: "  
  26.                     + e.getMessage());  
  27.             return;  
  28.         }  
  29.         browser.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true,  
  30.                 true21));  
  31.           
  32.         //从指定网址获取html,将html加载到浏览器中  
  33.         String url="http://dict.youdao.com/";  
  34.         browser.setText(fetchHtml(url, "utf-8"));  
  35.         shell.setSize(12001200);  
  36.         shell.open();  
  37.         while (!shell.isDisposed()) {  
  38.             if (!display.readAndDispatch())  
  39.                 display.sleep();  
  40.         }  
  41.         display.dispose();  
  42.     }  
  43.   
  44.     /** 
  45.      * 抓取某个网页的源代码 
  46.      *  
  47.      * @param urlstr 
  48.      *            要抓取网页的地址 
  49.      * @param charset 
  50.      *            网页所使用的编码 如"utf-8","gbk" 
  51.      * @return 
  52.      * @throws IOException 
  53.      */  
  54.     public static String fetchHtml(String urlstr, String charset)  
  55.             throws IOException {  
  56.         URL url = new URL(urlstr);  
  57.         HttpURLConnection con = (HttpURLConnection) url.openConnection();  
  58.         InputStream is = con.getInputStream();  
  59.         InputStreamReader isr = new InputStreamReader(is, charset);  
  60.         String result = "";  
  61.         int read;  
  62.         while ((read = isr.read()) != -1) {  
  63.             result += (char) read;  
  64.         }  
  65.         isr.close();  
  66.         return result;  
  67.     }  
  68.   
  69. }  

运行结果:

自己动手做J浏览器——基于JAVA和火狐内核(gecko)_第2张图片

如果您运行代码的时候出现了:Could not instantiate Browser: No more handles [Could not detect registered XULRunner to use],说明您的xulrunner没有安装成功,请将教程完整看完,不要只看代码部分。。。。。。

你可能感兴趣的:(搜索引擎)