1 编译过程
1.1 开发工具
Git-2.13.2-64-bit
cmake-3.9.0-rc5-win64-x64
python-2.7.13.amd64
jdk1.7.0_75
vs2015
各开发工具从网上搜索下载,安装git, cmake, python , 如果安装软件支持选择添加环境变量,要选上。
没有的话,手工添加环境变量 。
Visual Studio 安装过程注意把 window sdk 8.1 勾选上。
1.2 命令行编译
在D 盘建立目录 java-cef,进入。
cd java-cef
git clone https://bitbucket.org/chromiumembedded/java-cef.git src
cd src
mkdir jcef_build && cd jcef_build
cmake -G "Visual Studio 14 Win64" ..
注意如果是32位,使用命令为 cmake -G "Visual Studio 14" ..
使用了一些代理工具,有访问权限后, 如下:
有可能会因为网络原因出现上边的下载错误,把gs://chromium-clang-format/6ddedd571c56b8c184f30a3c1fc36984e8c10ccd改为https://storage.googleapis.com/chromium-clang-format/6ddedd571c56b8c184f30a3c1fc36984e8c10ccd,然后浏览器下载,下载完成后再把文件名改为clang-format.exe放到D:\java-cef\src\tools\buildtools\win目录即可。
注意,如果是32位编译,使用32位jdk。 通过修改系统环境变量中的 java_home。
1.3 vs 生成解决方案
打开 jcef.sln , 生成解决方案,如下图:
1.4 java编译测试
编译执行以下命令
cd java-cef\src\tools
compile.bat win64
测试执行以下命令:
run.bat win64 Release detailed
1.5 打开调试工具
在测试例子中有个菜单 show DevTools ,点击。
1.6 打包
cd java-cef\src\tools
make_distrib.bat win64
如果 32位,那么修改为 make_distrib.bat win32
1.7 Eclipse运行
把目录 D:\java-cef\src\binary_distrib\win64\bin 下的 jar 复制到 eclipse java项目工程中 lib中,并且添加类路径中。
把 D:\java-cef\src\binary_distrib\win64\bin\lib\win64目录复制到工程某目录中, 调试运行的时候,加上 Djava.library.path 指定目录,比如复制到 browser下,那么配置为 -Djava.library.path=browser/win64
1.8 SWT 嵌入
不仅支持 awt 、 swing ,同时也可以在 SWT上潜入。 代码如下:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Frame;
import org.cef.CefApp;
import org.cef.CefClient;
import org.cef.CefSettings;
import org.cef.browser.CefBrowser;
import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class SwtFrame {
public static void main(String[] args) {
final Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
Composite locationComp = new Composite(shell, SWT.EMBEDDED);
Frame frame = SWT_AWT.new_Frame(locationComp);
CefSettings settings = new CefSettings();
settings.windowless_rendering_enabled = false;
CefApp cefApp_ = CefApp.getInstance(settings);
CefClient client = cefApp_.createClient();
CefBrowser browser = client.createBrowser("http://www.baidu.com", false, false);
Component uiComponent = browser.getUIComponent();
frame.setLayout(new BorderLayout());
frame.add(uiComponent, BorderLayout.CENTER);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
}