[图文]自己动手做J浏览器——基于JAVA和火狐内核(gecko)
2013-10-13 23:59
591 查看
网上有关于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,找到解压后文件夹的位置,输入:
回车完成xulrunner的安装。整个操作如下图所示:
注意:有些人的操作系统可能是英文的,把上面指令中的“桌面”改成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,将如下代码粘贴进去,运行即可:
运行结果:
如果您运行代码的时候出现了:Could not instantiate Browser: No more handles [Could not detect registered XULRunner to use],说明您的xulrunner没有安装成功,请将教程完整看完,不要只看代码部分。。。。。。
教程中所涉及到需要下载的资源,都在代码示例中,如果您不想一个一个下载资源,可直接下载“代码示例”:
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,找到解压后文件夹的位置,输入:
xulrunner --register-user
回车完成xulrunner的安装。整个操作如下图所示:
注意:有些人的操作系统可能是英文的,把上面指令中的“桌面”改成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,将如下代码粘贴进去,运行即可:
import org.eclipse.swt.SWT; import org.eclipse.swt.SWTError; import org.eclipse.swt.browser.Browser; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class Main { static Browser browser; public static void main(String[] args) throws IOException { Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new GridLayout(2, true)); shell.setText("Change DOM Value"); try { browser = new Browser(shell, SWT.MOZILLA); } catch (SWTError e) { System.out.println("Could not instantiate Browser: " + e.getMessage()); return; } browser.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 2, 1)); //从指定网址获取html,将html加载到浏览器中 String url="http://dict.youdao.com/"; browser.setText(fetchHtml(url, "utf-8")); shell.setSize(1200, 1200); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } /** * 抓取某个网页的源代码 * * @param urlstr * 要抓取网页的地址 * @param charset * 网页所使用的编码 如"utf-8","gbk" * @return * @throws IOException */ public static String fetchHtml(String urlstr, String charset) throws IOException { URL url = new URL(urlstr); HttpURLConnection con = (HttpURLConnection) url.openConnection(); InputStream is = con.getInputStream(); InputStreamReader isr = new InputStreamReader(is, charset); String result = ""; int read; while ((read = isr.read()) != -1) { result += (char) read; } isr.close(); return result; } }
运行结果:
如果您运行代码的时候出现了:Could not instantiate Browser: No more handles [Could not detect registered XULRunner to use],说明您的xulrunner没有安装成功,请将教程完整看完,不要只看代码部分。。。。。。
相关文章推荐
- 自己动手做J浏览器——基于JAVA和火狐内核(gecko)
- FireFox(火狐)浏览器内核 gecko 之delphi应用
- 用JAVA编写浏览器内核之实现javascript的document对象与内置方法
- 设计自己的基于Selenium 的自动化测试框架-Java版(2) - 定义自己的工作流程
- 自己写的基于java Annotation(注解)的数据校验框架
- 基于java注解实现自己的orm框架
- java 下载文件 兼容 ie 火狐 google 浏览器 ,解决下载文件乱码问题
- 设计自己的基于Selenium 的自动化测试框架-Java版(1) - 为什么selenium还需要测试框架?
- 基于Chrome、Java、WebSocket、WebRTC实现浏览器视频通话
- 构建自己的基于Java的超级计算机
- 浏览器内核Trident/Gecko/WebKit/Presto
- 构建自己的基于Java的超级计算机
- 浏览器内核Gecko与WebKit哪个性能更强大
- 【java并发】基于JUC CAS原理,自己实现简单独占锁
- 自己模仿QQ基于Java Swing做的一个QQ界面
- webkit Trident Gecko 浏览器内核引擎三分天下
- [iPhone-APP]基于Socket+Http打造自己的浏览器Demo
- Winform调用WebKitBrowser,基于chrome内核WebKit的浏览器控件
- 基于现有的Linux LiveCD加入自己的内核和ramfs
- 基于Chrome,foxfire(WeiKit内核)浏览器的密码安全控件插件开发(NPAPI)