JCEF 初体验,window系统构建jar包
前言
本文记录如何通过jcef源代码去构建自己所需要的jar包,此文章构建的为windows64位jcef 的 jar 包,若需要构建 32 位的 jar 包,则需要按照文章将相关准备软件设置为 32 位版本
准备工作
首先我们可以前往JCEF的源代码托管页面去查看,该页面也有详细的构建步骤和所需条件
相关软件准备
此图是官方构建所需要的相关工具软件版本,此文按照此版本进行构建

部分软件安装教程引用互联网上相关安装教程文档
- GIT 软件(没有系统位数要求),安装教程
TortoiseGit(git工具,熟悉git命令的也可不安装此工具) - Java version 7 to 14. JAVA环境,推荐JAVA1.8(有系统位数要求,若想构建32位的jar包,则需要使用JAVA1.8 32位),安装教程
- Python version 2.6+ or 3+. Python环境,推荐Python2.7(没有系统位数要求),安装教程
- CMake version 3.19 or newer. CMake(没有系统位数要求),安装教程
- Visual Studio 2019 VS开发工具,用于生成,安装教程
以下是我的安装环境

注意事项
构建过程需要下载部分文件,需要用到 kx上网,当然我也会提供本文涉及到的文件,若不想用我的,可自行寻找方法
一,获取JCEF源码
二、CMakeLists.txt 文件
进入 src 文件夹,打开 CMakeLists.txt 文件,并找到下图处,将对应部分进行注释
搜索 Downloading clang-format from Google Storage 快速导航到此处,将图中红框部分进行注释或删除

查看 CMakeLists.txt 文件,可以查看到此源码构建需要使用到的命令和环境,如图,构建64位需要输入命令
cmake -G "Visual Studio 16" -A x64 ..,若构建32位,则需要输入cmake -G "Visual Studio 16" -A Win32 ..。注意,此命令需要在src\jcef_build路径下输入

注:过程中会下载对应的 CEF chromium 包,此处需要用到 kx上网工具,不然下载速度比蜗牛还慢,若直接使用我的可跳转至2.42.1 查看 CMakeLists.txt 文件,搜索 CEF_VERSION ,图中红框处,就是构建所需要的 CEF chromium 包,将其版本号进行复制

2.2 进入CEF各版本下载地址页面,在图中此处粘贴版本号进行搜索

2.3 上方可选择不同系统位数,本文选择Windows 64-bit,最下方 ALL Builds 类目中第一条就是我们所需要的,直接点击即可进行下载

2.4 注:本人也提供下载好的相关版本供各位使用,需要的可以自行下载,git地址

三、CEF chromium 包准备
- 进入 src\third_party\cef 文件夹下,将第4步下载好的 CEF chromium 包,解压复制到此路径下(使用我的则不需要解压),注意文件夹名称不能更改(需要构建32位的将32位包解压后复制到此路径下即可)


四、开始构建
4.1 创建 jcef_build 文件夹
在地址栏出输入 cmd 快捷打开命令行窗口

输入如下命令,创建 jcef_build 文件夹并进入,必须为此名称
mkdir jcef_build && cd jcef_build

4.2 通过 cmake 命令进行构建
输入 cmake -G "Visual Studio 16" -A x64 .. 进行构建,此处若是构建失败,大概率是环境版本位数的问题,将环境修改为你需要构建的位数版本,出现下图所示,即构建成功

4.3 VS2019 生成
将刚构建好的文件中 jcef.sln 使用vs2019打开

在工具栏中打开 生成->配置管理器

在配置管理器中,将 活动解决方案配置 设置为 Release , 活动解决方案平台 设置为 x64

点击 生成->生成解决方案 ,然后等待完成

等待输出窗口出现 ========== 生成: 成功 4 个,失败 0 个,最新 0 个,跳过 1 个 ========== 即为完成

4.4 构建 JCEF 的 Java 的 class 文件
将命令行窗口导航到 src\tools 目录下,运行此命令
compile.bat win64(若是构建32位,把win64改成win32)

进行测试,命令行窗口分别运行
run.bat win64 Release detailed和run.bat win64 Release simple出现以下窗口,即为成功(页面无内容是因为默认访问的 google.com ,可以在地址栏输入百度的地址进行测试 )


五、打包
在命令行窗口导航到 src\tools 目录下,运行 make_distrib.bat win64 (若是构建32位,把win64改成win32)

六、完成
进入此目录 src\binary_distrib ,该目录下就是我们构建好的相关文件和jar包

进行jcef项目开发时,需要将红框中的进行引入

最后
因为项目需要用到,所以研究这个也有一段时间了,期间各种错误,网络上相关资料也少得可怜,最终靠摸索终于初步理解(若是你的构建步骤出错,大概率为版本问题,若版本无问题,可以先在CEF论坛上输入关键字进行查找)
有兴趣的也可查看这篇文章进行开发体验,“JCEF 初体验一,快捷键打开开发者工具”
最后,感谢如下大佬的文章
https://blog.csdn.net/u013642500/article/details/102655124 奔跑的苍狼
JCEF 初体验,window系统构建jar包的更多相关文章
- maven构建jar包
1.执行可执行的class,代码内需要有入口main方法 2.通过mvn package来构建jar包 3.使用java -jar test.jar来执行jar包 https://www.cnblog ...
- pytorch入门2.1构建回归模型初体验(模型构建)
pytorch入门2.x构建回归模型系列: pytorch入门2.0构建回归模型初体验(数据生成) pytorch入门2.1构建回归模型初体验(模型构建) pytorch入门2.2构建回归模型初体验( ...
- 一个tomcat下,两个系统的jar包可以相互引用。
将道路挖占管理系统(rems)从交通设备设施系统(tms)中剥离出去以后,在本地调试的时候是在同一个Tomcat下启动的,上传文件成功. 然后部署到西安以后,分成两个tomcat以后,发现rems上传 ...
- gitlab+jenkins自动构建jar包并发布
一.背景介绍: 公司软件都是java开发的,一般都会将java代码打包成jar包发布:为了减轻运维部署的工作量,合理偷懒,就需要自动化流程一条龙服务:开发将代码提交到gitlab--->jenk ...
- Linux系统下jar包的启动方式
Linux 运行jar包命令如下: 方式一: Java -jar shareniu.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? ...
- 用dockerfile构建基于centos系统的jar包的镜像
实际示例: [root@master01 home-dataline]# ls dataline.jar Dockerfile jdk-8u181-linux-x64.tar.gz [root@mas ...
- window下打jar包
比如我的项目在 F/Myjar F:\Myjar>ll'll' 不是内部或外部命令,也不是可运行的程序或批处理文件. F:\Myjar>cd mian系统找不到指定的路径. F:\Myja ...
- [Maven]Maven构建可执行的jar包(包含依赖jar包)
----------------------------------------------------------------- 原创博文,如需转载请注明出处! 博主:疲惫的豆豆 链接:http:/ ...
- Android Studio 导入系统 jar包
1.当前需要导入系统jar包的module所对应build.gradle中添加如下依赖: provided files('libs/classes-full-debug.jar') 也可以图形化设置: ...
随机推荐
- 【原创】SpringBoot 2.7.0通过lettuce及commons-pool2 v2.9.0集成Redis踩坑记录
背景 公司的一个项目由于HTTPS证书到期,导致小程序.POS不能正常使用.所以百度了下,通过URL检测证书有效期的代码,并自行整合到一个服务中. 代码仓库:[基于SpringBoot + 企业微信 ...
- python亲密数设计
'''亲密数 (如果a的所有正因子和等于b,b的所有正因子和等于a,因子包括1但不包括本身,且a不等于b,则称a,b为亲密数对.一般通过叠代编程求出相应的亲密数对)'''n = 3000def fun ...
- 某CMS后台通杀getshell
此CMS是基于thinkphp框架二次开发的,目前有thinkphp5,以及thinkphp6两种版本.这些漏洞挖掘出来的时候已经在cnvd被提交过了.但是网上并没有漏洞文章.避免风险这里只分享思路. ...
- 监听 Markdown 文件并热更新 Next.js 页面
Next.js 提供了 Fast-Refresh 能力,它可以为您对 React 组件所做的编辑提供即时反馈. 但是,当你通过 Markdown 文件提供网站内容时,由于 Markdown 不是 Re ...
- nginx 出现An error occurred错误
原因是我nginx中conf文件的配置里面 location中的 这一块内容是 #注释的那两行 所以报错出现这个错误. 后来将这两行注释掉,改成这两个就好了. root html; index ind ...
- 面向个性化需求的在线云数据库混合调优系统 | SIGMOD 2022入选论文解读
SIGMOD 数据管理国际会议是数据库领域具有最高学术地位的国际性会议,位列数据库方向顶级会议之首.近日,腾讯云数据库团队的最新研究成果入选 SIGMOD 2022 Research Full Pap ...
- Collection子接口:Set接口
1.Set 存储的数据特点:无序的.不可重复的元素具体的:以HashSet为例说明: 1. 无序性:不等于随机性.存储的数据在底层数组中并非照数组索引的顺序添加,而是根据数据的哈希值决定的. 2. 不 ...
- Modeling Conversation Structure and Temporal Dynamics for Jointly Predicting Rumor Stance and Veracity(ACL-19)
记录一下,论文建模对话结构和时序动态来联合预测谣言立场和真实性及其代码复现. 1 引言 之前的研究发现,公众对谣言消息的立场是识别流行的谣言的关键信号,这也能表明它们的真实性.因此,对谣言的立场分类被 ...
- windows配置skywalking集群
一.zookeeper 准备配置三个zookeeper,因为我是单台模拟,所以需要使用不同的端口,使用版本是apache-zookeeper-3.6.3-bin (必须是3.5+) 1.第1个zook ...
- 通过jmeter压测surging
前言 surging是异构微服务引擎,提供了模块化RPC请求通道,引擎在RPC服务治理基础之上还提供了各种协议,并且还提供了stage组件,以便针对于网关的访问, 相对于功能,可能大家更想知道能承受多 ...


