java-cef编译测试
2017-09-15 16:49
134 查看
官方地址
https://bitbucket.org/chromiumembedded/java-cef
下载地址
https://bitbucket.org/chromiumembedded/java-cef/downloads/
https://github.com/chromiumembedded/java-cef
chromium各个平台编译好的版本下载地址
http://opensource.spotify.com/cefbuilds/index.html
文章发布时chromium版本:CEF 3.3163.1663.g416ffeb / Chromium 61.0.3163.79
本文参考自官方文档:https://bitbucket.org/chromiumembedded/java-cef/wiki/BranchesAndBuilding
编译代码
支持在Windows,Linux和Mac OS x下64位java下编译,32位可能可以被编译,但是未测试过。
需要安装的软件:
CMake >= 2.8.12.2版本
Git.
Java 1.7 或 1.8版本
Python >=2.6(2.x版本系列) (不支持3.x).
Windows平台:
当前版本的JCEF使用Visual Studio 2015来编译和运行,使用其它版本的开发工具可能会存在编译或运行错误。
使用Git下载
编译指南
1. 编译chromium(CEF)生成本地代码(Windows下DLL,Linux下so):运行CMake生成特定平台的本地代码. 如果需要生成Release版本的jcef和jcef_helper,请设置CMaker的额外输出参数。
Windows: 生成64位 VS2015项目工程.
有可能会因为网络原因出现上边的下载错误,把gs://chromium-clang-format/6ddedd571c56b8c184f30a3c1fc36984e8c10ccd改为https://storage.googleapis.com/chromium-clang-format/6ddedd571c56b8c184f30a3c1fc36984e8c10ccd,然后浏览器下载,下载完成后再把文件名改为clang-format.exe放到tools目录即可。
使用vs2015打开 jcef.sln
生成->配置管理器 ->活动解决方案配置,修改为"Release"
生成->生成解决方案
2. 编译JCEF的java代码(java调用chromium代码).
3. 运行run.[bat|sh]命令测chromium,测试代码中带有两个例子simple(java/simple/MainFrame.java)或detailed(java/detailed/MainFrame.java),可以在命令行中添加simple或detailed参数来运行不同的例子代码
打包jar指南
把调用chromium的java代码生成jar包。
新建eclipse项目
把上一边生成的jar和dll相关文件放进项目中,也可以放进操作系统的库目录中。
我这里的代码目录如下:
https://bitbucket.org/chromiumembedded/java-cef
下载地址
https://bitbucket.org/chromiumembedded/java-cef/downloads/
https://github.com/chromiumembedded/java-cef
chromium各个平台编译好的版本下载地址
http://opensource.spotify.com/cefbuilds/index.html
文章发布时chromium版本:CEF 3.3163.1663.g416ffeb / Chromium 61.0.3163.79
本文参考自官方文档:https://bitbucket.org/chromiumembedded/java-cef/wiki/BranchesAndBuilding
编译代码
支持在Windows,Linux和Mac OS x下64位java下编译,32位可能可以被编译,但是未测试过。
需要安装的软件:
CMake >= 2.8.12.2版本
Git.
Java 1.7 或 1.8版本
Python >=2.6(2.x版本系列) (不支持3.x).
Windows平台:
当前版本的JCEF使用Visual Studio 2015来编译和运行,使用其它版本的开发工具可能会存在编译或运行错误。
使用Git下载
# The JCEF source code will exist at `/path/to/java-cef/src` cd /path/to/java-cef git clone https://bitbucket.org/chromiumembedded/java-cef.git src
编译指南
1. 编译chromium(CEF)生成本地代码(Windows下DLL,Linux下so):运行CMake生成特定平台的本地代码. 如果需要生成Release版本的jcef和jcef_helper,请设置CMaker的额外输出参数。
Windows: 生成64位 VS2015项目工程.
# Enter the JCEF source code directory. cd /path/to/java-cef/src # Create and enter the `jcef_build` directory. # The `jcef_build` directory name is required by other JCEF tooling # and should not be changed. mkdir jcef_build && cd jcef_build # Windows: Generate 64-bit VS2015 project files. cmake -G "Visual Studio 14 Win64" .. # Open jcef.sln in Visual Studio # - Select Build > Configuration Manager and change the "Active solution configuration" to "Release" # - Select Build > Build Solution.
0> Failed to fetch file gs://chromium-clang-format/6ddedd571c56b8c184f30a3c1fc36984e8c10ccd for tools/buildtools/win/clang-format.exe, skipping. [Err: Traceback (most recent call last): File "D:\project\java\java-cef\src\tools\buildtools\gsutil.py", line 9, in <module> import argparse ImportError: No module named argparse
有可能会因为网络原因出现上边的下载错误,把gs://chromium-clang-format/6ddedd571c56b8c184f30a3c1fc36984e8c10ccd改为https://storage.googleapis.com/chromium-clang-format/6ddedd571c56b8c184f30a3c1fc36984e8c10ccd,然后浏览器下载,下载完成后再把文件名改为clang-format.exe放到tools目录即可。
使用vs2015打开 jcef.sln
生成->配置管理器 ->活动解决方案配置,修改为"Release"
生成->生成解决方案
2. 编译JCEF的java代码(java调用chromium代码).
cd /path/to/java-cef/src/tools compile.bat win64
3. 运行run.[bat|sh]命令测chromium,测试代码中带有两个例子simple(java/simple/MainFrame.java)或detailed(java/detailed/MainFrame.java),可以在命令行中添加simple或detailed参数来运行不同的例子代码
cd /path/to/java-cef/src/tools run.bat win64 Release detailed
打包jar指南
把调用chromium的java代码生成jar包。
cd /path/to/java-cef/src/tools make_distrib.bat win64
新建eclipse项目
把上一边生成的jar和dll相关文件放进项目中,也可以放进操作系统的库目录中。
我这里的代码目录如下:
package tests.simple; import java.awt.BorderLayout; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.lang.reflect.Field; import javax.swing.JFrame; import javax.swing.JTextField; import org.cef.CefApp; import org.cef.CefApp.CefAppState; import org.cef.CefClient; import org.cef.CefSettings; import org.cef.OS; import org.cef.browser.CefBrowser; import org.cef.handler.CefAppHandlerAdapter; public class MainFrame extends JFrame { private static final long serialVersionUID = -5570653778104813836L; private final JTextField address_; private final CefApp cefApp_; private final CefClient client_; private final CefBrowser browser_; private final Component browerUI_; private MainFrame(String startURL, boolean useOSR, boolean isTransparent) { CefApp.addAppHandler(new CefAppHandlerAdapter(null) { @Override public void stateHasChanged(org.cef.CefApp.CefAppState state) { // Shutdown the app if the native CEF part is terminated if (state == CefAppState.TERMINATED) System.exit(0); } }); CefSettings settings = new CefSettings(); settings.windowless_rendering_enabled = useOSR; cefApp_ = CefApp.getInstance(settings); client_ = cefApp_.createClient(); browser_ = client_.createBrowser(startURL, useOSR, isTransparent); browerUI_ = browser_.getUIComponent(); address_ = new JTextField(startURL, 100); address_.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { browser_.loadURL(address_.getText()); } }); getContentPane().add(address_, BorderLayout.NORTH); getContentPane().add(browerUI_, BorderLayout.CENTER); pack(); setSize(800, 600); setVisible(true); addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { CefApp.getInstance().dispose(); dispose(); } }); } /** * 添加DLL库路径 * @param libraryPath */ private static void addLibraryDir(String libraryPath){ try{ Field userPathsField = ClassLoader.class.getDeclaredField("usr_paths"); userPathsField.setAccessible(true); String[] paths = (String[]) userPathsField.get(null); StringBuilder sb = new StringBuilder(); for (int i = 0; i < paths.length; i++) { if (libraryPath.equals(paths[i])) { continue; } sb.append(paths[i]).append(';'); } sb.append(libraryPath); System.setProperty("java.library.path", sb.toString()); final Field sysPathsField = ClassLoader.class.getDeclaredField("sys_paths"); sysPathsField.setAccessible(true); sysPathsField.set(null, null); } catch(Exception e){ e.printStackTrace(); } } public static void main(String[] args) { //添加DLL库 MainFrame.addLibraryDir("D:\\project\\java\\javacef\\lib\\win64"); new MainFrame("https://my.oschina.net/penngo/blog", OS.isLinux(), false); } }
相关文章推荐
- maven学习:java编译插件与去除测试插件
- maven学习:java编译插件与去除测试插件
- Java开发流程自动化(svn+maven+nexus+jenkins) --自动编译,持续集成,测试,打包,发布/部署
- g++编译动态库。测试java jni调用第三方动态库。[android studio IDE]
- 编译Java-cef
- 测试 今天在导入一个工程时,编译并打包到Tomcat后,发现出现java.lang.UnsupportedClassVersionError: Bad version number in .class
- Java开发流程自动化(svn+maven+nexus+jenkins) --自动编译,持续集成,测试,打包,发布/部署
- maven学习:java编译插件与去除测试插件
- 有关cygwin中JAVA的中文环境编译测试(用gcj生成.exe)
- 编译java-cef
- 编译java程序及编译hadoop,hbase 的java测试程序
- Java程序运行机制及cmd编译运行探究(三) 测试类运行jar包
- java-cef编译过程
- java-cef系列视频第一集:从官方代码编译
- java反编译 myeclipse 10安装反编译插件 (已经测试安装成功)
- java编译原理
- K-java软件测试指南
- java反编译之 基础篇(class未加密未混淆)
- 练习 2017-08-13 获取进程数据-编译和运行Java代码 问题在截图上 留待解决。
- JavaSE (一)入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行