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

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

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

xulrunner --register-user

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

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

cd desktop\xulrunner。

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

我们这个浏览器的界面,采用的是org.eclipse.swt这一套的操作,需要导入这个jar包,这个jar包可以在你的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没有安装成功,请将教程完整看完,不要只看代码部分。。。。。。

java 调用火狐内核_[图文]自己动手做J浏览器——基于JAVA和火狐内核(gecko)相关推荐

  1. java在线书城系统_二手书城系统 本设计为基于JAVA的网上书店系统 - 下载 - 搜珍网...

    压缩包 : e3e5162e046943e353d52817670.zip 列表 二手书城系统/ 二手书城系统/book_system/ 二手书城系统/book_system/book/ 二手书城系统 ...

  2. java调用百度AI实现图文识别功能

    一.创建百度应用 1.在浏览器输入网址https://login.bce.baidu.com/或者百度搜索'百度ai'点击第一个.点击主页的产品服务,看到文字识别.如下图所示: 2.点击创建应用 创建 ...

  3. java 调用postgresql 函数_从Java调用PostgreSQL中的存储过程

    我编写了一个我想用Java调用的存储过程.但我不认为它能够对我通过的查询做任何事情.以下是我的java代码: String QUERY_LOCATION = "select (license ...

  4. java调用easyxml接口_【技术教程】如何通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口?...

    原标题:[技术教程]如何通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口? RTSP协议视频平台EasyNVR经过多年的积累,已经是一套成熟且完善的视频平台了,用户可以通过网页直接访 ...

  5. java调用siri 语言_如何更改Siri的声音,口音,性别和语言

    java调用siri 语言 Most of us are familiar with Siri as an American female voice. What you may not realiz ...

  6. java 调用祖父方法_在Java中调用祖父母方法:您不能

    java 调用祖父方法 在文章保护的重点中,我详细介绍了"受保护"如何扩展"包私有"访问. 我在那儿写道: 你能做的是 覆盖子类中的方法或 使用关键字super ...

  7. java 调用 js性能_太快了,太变态了:什么会影响Java中的方法调用性能?

    java 调用 js性能 那么这是怎么回事? 让我们从一个简短的故事开始. 几周前,我提议对Java核心libs邮件列表进行更改 ,以覆盖当前final一些方法. 这刺激了一些讨论主题-其中之一是其中 ...

  8. java调用oracle存储过程_做一点,记一点 ~ Java调用Oracle存储过程

    一.需求 传入一个参数,返回一条或多条记录(列表). 二.实现步骤 1. 编写Oracle存储过程. -- 声明包和包体的语句应该分两次执行,即使声明在前定义在后,如果一起执行依然会编译出错 --调用 ...

  9. java 调用.net类库_通过COM组件方式实现java调用C#写的DLL文件

    通过Java调用C#的DLL文件实现.网上资料很多,自己整合总结了一下,做个备忘. 一.C#写com组件 开发环境 VS2013 1.新建工程:TestDemo(类库项目)     //根据自己需要取 ...

最新文章

  1. mycncart 1.4.0.0 新版本发布
  2. 计算机组成知识试题及答案,《计算机组成与结构复习题及答案.doc
  3. 高德地图区域线显示_护航国庆假期,助力重点区域精细化管理——扬州交警与高德地图联合推出“全境智能”系统...
  4. 思品课如何使用计算机教学课件,小学思品获奖论文巧用多媒体,优化思品课堂教学...
  5. 经典滑盖全面屏手机大降价!荣耀Magic2到手1799元
  6. 电梯java_基于Java的电梯系统
  7. python判断字母大写_python判断字符串是字母 数字 大小写(转载)
  8. SpringCloud微服务(01):Eureka组件,管理服务注册与发现
  9. php serialize参数,php serialize(),unserialize()
  10. php mysql注入测试工具_PHP+MYSQL 【注入漏洞】攻防测试
  11. 直播预告丨技术干货:易鲸捷HTAP融合型分布式数据库连接服务层介绍
  12. 软件设计师 2022年上半年下午题
  13. zte中兴客户端掉线的一种解决办法
  14. 国际抗疫数据分析脚本
  15. 大屏可视化低代码开发平台网址
  16. Balsamiq Mockups完全手册
  17. 华为云存储服务分享文件的方法
  18. java 汉字转拼音工具_java汉字转拼音工具类
  19. 企业成功的秘密:成为独角兽
  20. Oracle 设置 密码可以重复使用 the password cannot be reused

热门文章

  1. matlab2017b的破解激活
  2. 大话转岗PHP开发小结
  3. [转贴]一个大学生给女朋友的信
  4. JDK环境变量及配置简介
  5. Appium-Double Tap(双击)
  6. LocalOS 0.1.1 版发布(内附本程序源码及Java版网游找CALL示例源码)
  7. 学术期刊的级别、种类、等级,研究生看哪些论文,这篇文章全讲清楚了(自用笔记)
  8. Typora常用快捷键
  9. ABAP smartforms 打印多页打印在同一页上解决
  10. 生物信息学|用于预测药物-药物相互作用事件的多模态深度学习框架