[Java教程]Jcef内嵌浏览器windows版本的编译及使用

0 2017-04-17 12:00:15

背景

去年年底接到的新需求,需要将原来用Swing做的桌面应用中的一个功能做成Web版的,并且要集成到原应用中,换言之就是要使用内嵌浏览器。最开始考虑的是JavaFx提供的WebView,优点是不需要其他第三方库,jdk1.7开始集成。但是开发完成之后发现两个比较严重的问题,一是界面有一个比较复杂的曲线图会严重卡顿,另一个是有几率会导致虚拟机崩溃,并且速度上也不是很让人满意。最后只能考虑换一个内嵌浏览器框架,然后就找到jcef,基于chrome,速度兼容性都很好。

关于jcef就不多作介绍,不了解的可以戳这里java-cef,本文主要讲解jcef的编译过程,由于产品只支持windows平台使用的是32位的jre,所以只编了win32的版本,64位编译过程基本相同,只需要改变下参数。

编译环境CMake 2.8.12.2或者更新的版本(我用的免装版,bin目录要手动配置环境变量)

Git

Visual Studio 2015(官网推荐2015,原因是开发者使用的就是2015版本,实测VS2010和VS2013编译均会报错)

Java 1.8 32位 (官网写的是1.7或者1.8,实际上使用1.7编译java部分会有语法错误,可以修改源码规避,建议使用1.8,编译64位版本使用64位的jdk)

Python 2.6或者更新的版本(不支持Python3)

编译过程

1. 源码下载

使用Git将下载jcef源码,clone地址:https://bitbucket.org/chromiumembedded/java-cef.git,当然也可以直接下载Jcef源码。这里建议使用Git Clone,因为在使用CMake构建的时候需要用到.git目录下面的文件中当前节点的信息来构建jcef_version.h头文件,如果不是git clone的代码,没有git相关的文件编译会出错,这个应该是可以通过修改编译脚本规避,把通过git文件获取的信息写死,没有试过,不细表。

2. CMake构建VS工程

在源码目录下创建新目录jcef_build(不可随意命名),打开DOS进入到新目录中,输入命令cmake -G "Visual Studio 14 2015" ..,回车开始构建。此处有坑,我编的时候新装的VS2015这里报错,找不到编译器,研究了老半天最后找到一句话,VS2015默认安装不包含C++支持……当时整个人都不好了。如果要编64位的话命 令换成这样:cmake -G "Visual Studio 14 Win64" .. 。这里还有一个注意的地方是,这个过程会自动去下载当前Jcef对应的CEF的版本,若果下载不成功可以自己下载之后放到/java-cef/third_party/cef目录中。CEF版本号可以从源码目录下的CMakeLists.txt文件中找到。

CEF下载地址:http://opensource.spotify.com/cefbuilds/index.html  (经常打不开,我FQ才能稳定打开)

CMake构建后的C++项目:

3. VS构建

使用VS打开jcef_build中的jcef.sln文件,选择"生成-->配置管理器-->修改为Release和Win32",然后选择"生成-->生成解决方案",然后等待构建完成。

4. 编译java代码

使用dos进入到源码目录的tools目录里,执行命令compile.bat win32

5. 测试运行

同样是tools目录,执行run.bat win32 Release simple或者run.bat win32 Release detailed,浏览器正常运行,编译成功。

6. 打包

tools目录下执行 make_distrib.bat win32,源码目录下会自动创建打包目录binary_distrib,里面包含了api文档,浏览器Demo,使用到的jar和dll以及资源文件。

使用方法

需要用到的jar: \java-cef\binary_disrib\win32\bin里面的相关jar包

动态库以及资源文件等:\java-cef\binary_disrib\win32\bin\lib\win32里面的所以内容

编码时导入jcef即可编译成功,运行时classpath指定上述jar包,将上面的dll等文件win32目录下的所以内容放在一个目录中,然后将其指定为-Djava.library.path的值即可,可以参考\java-cef\binary_distrib\win32里面的run.bat。

一键编译脚本

build_jcef.bat win32一键编译,脚本是按照可编译64位写的,参数用win64就行了,不过笔者没试过......

@echo on@rem 设置路径set SRC_PATH=D:\java-cefset VS_PATH=C:\Develop\VS2015if "%1" == "" (echo ERROR: Please specify a target platform: win32 or win64set ERRORLEVEL=1goto end)cd /d %SRC_PATH%mkdir %SRC_PATH%\jcef_buildcd /d %SRC_PATH%\jcef_build@rem CMake构建cmake -G "Visual Studio 14 2015" ..@rem VS编译@echo VS Building Start%VS_PATH%\Common7\IDE\devenv.exe %SRC_PATH%\jcef_build\jcef.sln /rebuild "Release|%1"@echo VS Building End@rem 编译java部分cd /d %SRC_PATH%\tools call compile.bat %1@rem 打包call make_distrib.bat %1:endExit /B

View Code

结语

从编译到开发,以及解决各种bug,jcef的资料太少,走过不少弯路。不过项目总算是顺利完成交付,这里做个笔记,也分享给需要的人,希望能有所帮助。

本文网址:http://www.shaoqun.com/a/307261.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

Windows

0

java 内嵌chrome_[Java教程]Jcef内嵌浏览器windows版本的编译及使用相关推荐

  1. 安装 MySql5.7 详细教程,操作简单(Windows版本)

    文章目录 安装 MySql5.7 (解压版) 详细教程,操作简单(Windows版本) 1.官网下载MySql 2.解压,安装 3.环境变量 4.初始化数据库 5.安装MySql 6.启动或者停止服务 ...

  2. ssh连接linux_使用内网穿透访问内网ssh图文教程

    使用内网穿透访问内网ssh图文教程 穿透内网Linux系统22端口(SSH)教程 此教程可实现在外网SSH连接处于内网的Linux设备 1.下载网云穿linux版本 可使用wget下载或直接在官网下载 ...

  3. SpringBoot Zxing _ Java 生成二维码(可内嵌图片)

    前提 jdk 要求:1.8:会 SpringBoot.Maven: 以下代码可以直接复制粘贴到项目中,可以直接使用~ 一.pom 准备 <?xml version="1.0" ...

  4. java 搜索热词插件_SpringBoot结合内嵌Redis实现热词搜索功能

    需求说明 需要实现一个检索功能,需要查询到最近所有的所有热词,自定需求为所有一个月内检索数量最多的10个热词:这里使用Redis的内存数据库功能,其中Redis的ZSet格式提供的功能完全贴合该需求: ...

  5. Java实现生成二维码(内嵌LOGO和无LOGO均可)扫描进入目标网址

    效果图: <<<<<< = = = = = = >>>>>> 1.导入maven依赖 <dependency>< ...

  6. java流控_t-io小教程:tio-http内置的流控功能

    从事互联网应用平台的开发,安全一直是个工作量很大的领域,而流控则属于安全的一部分,为此tio-http特意内置了流控功能,我们来看看tio-http流控的使用步骤 1.实现SessionRateLim ...

  7. 几周内搞定Java的10个方法

     几周内搞定Java的10个方法 不要将Java与JavaScript弄混了,Java的目标是"一次编译,到处调试"(呃,不对,是"到处运行").简单来说, ...

  8. java洗衣店管理课程设计报告_课内资源 - 基于Java的洗衣店管理系统

    摘 要 随着科技的快速发展,人们的需求也是越来越多,为了方便对信息的管理我们小组就设计了一个洗衣店订单的管理系统. 洗衣店管理系统是典型的的信息管理系统,创建了六个类,分别是:Test类:Person ...

  9. Java高并发编程:线程范围内共享数据

    笔记摘要 所谓线程范围内共享数据,即对于相同的程序代码,多个模块在同一个线程中运行时要共享一份数据,而在另外线程中运行时又共享另外一份数据,API中为我们提供了一个操作线程范围内共享数据的类Threa ...

  10. java jeditorpane 自动换行_JDIC 中利用WebBrowser内置浏览器到java application中 | 学步园...

    JDIC简介: JDesktop Integration Components (JDIC),是一个开源的项目,目的是构建消除本机应用程序和 Java 等价物之间差距的组件.项目组长是个中国人.该项目 ...

最新文章

  1. JSP第二次作业_6小题
  2. OpenCV使用神经网络检测颜色检查器
  3. dockerfile构建nginx并结合php
  4. 学习笔记(07):Python网络编程并发编程-客户端与服务端代码bug修复
  5. 一篇短文带您了解一下EasyCaching
  6. 基本图形怎么改字体_PPT做得慢怎么办?掌握这6个技巧,你也能快速做出精美的PPT...
  7. Rectangle Pro for Mac移动光标窗口捕捉工具
  8. fork()和多线程
  9. 0708 - 今天休息,顺便废了个点子
  10. 离散数学杜忠复版答案_离散数学 杜忠复 陈兆均
  11. 树莓派基础实验13:雨滴探测传感器实验
  12. 吴恩达机器学习系列内容汇总
  13. 三四线城市的房地产泡沫率先崩盘?
  14. 访问共享服务器的没有权限文件夹权限设置,访问共享文件夹的时候提示没有权限访问网络资源怎么解决...
  15. java打印指定宽度_如何设置图片打印尺寸,长与宽指定大小(CM)?
  16. 武汉财贸学校2020计算机应用,2021年武汉市财贸学校招生简章
  17. vue 封装饿了么文件上传组件实现图片上传
  18. Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十六(商品排序,Thymeleaf快速入门,商品详情页的展示)
  19. VMware虚拟机安装Linux教程(CentOS7)
  20. MySQL 是什么?

热门文章

  1. 基于springboot网上书城系统
  2. SQL语法基础篇 —— 常用的SQL标准
  3. 问题: 在Multisim中的 Tools»Show Breadboard,我找不到面包板视图的选项。
  4. VPP教程 基本命令 记录
  5. 单片机各种通信协议详解
  6. 从开源硬件到开放型工业控制器
  7. 飞机订票系统- c语言课程设,C语言课程设计飞机订票系统设计
  8. 【浅谈】样本方差的分母“n”为什么要改为“n-1”
  9. python是一种解释型、面向什么的计算机程序设计语言_Python \解释型计算机程序设计语言...
  10. 怎么利用计算机辅助评标,计算机辅助评标系统及其的应用.doc