gecko java_[图文]自己动手做J浏览器——基于JAVA和火狐内核(gecko) | 学步园

这篇教程详细介绍了如何使用JAVA结合火狐内核Gecko来构建一个简单的浏览器。主要内容包括纠正导入JAR包的误解,解释需要安装和配置XULRunner的原因,并提供了代码示例展示如何创建和运行基于Eclipse SWT的浏览器界面。
摘要由CSDN通过智能技术生成

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

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

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

xulrunner --register-user

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

b0b2d00ceb6427c9640ab527b7e20d65.png

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

cd desktop\xulrunner。

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

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

8130c096a25bc7f88e9dfc9c54bc8fcc.png

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

最后一步,打开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;

}

}

运行结果:

37cb617930b1284105b6fb26a297a0b6.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值