在 eclipse 中使用 JCEF 运行 chromium 时,我似乎一直在碰壁。我能够到达发现 native 函数但仍然无法完成初始化的地步。我设置了 LD_PRELOAD 变量。我正在运行 MainFrame.java 类和自定义 Scala 代码,并且在每个代码中都遇到了相同的问题。有办法解决这个问题吗?
系统:
操作系统:Ubuntu 16.04
JCEF 第 3 版
CEF 版本 3
Java Jdk 8
结构和配置:
一切都在二进制分布结构下。我将 jars 作为库导入,将 native 库路径添加到 jcef jar 并将其导入到我的项目中。
我使用环境变量设置运行配置:
- 显示 = :0.0
- LD_PRELOAD =/path/to/libcef.so
我所有的库和 *.pak 文件都在 libcef.so 所在的同一目录和子目录中(二进制分发),chrome 沙箱和助手也是如此。
代码和错误
代码在以下之后失败:
println("Generating Handlers")
CefApp.addAppHandler(Handlers.getHandlerAdapter)
private var settings = new CefSettings
settings.windowless_rendering_enabled = useOSR
println("Starting App")
private final val cefApp : CefApp = if(commandLineArgs != null && commandLineArgs.size > 0) CefApp.getInstance(ChromeCommandLineParser.parse(commandLineArgs)) else CefApp.getInstance(settings)
println("Creating Client")
private final val client : CefClient = cefApp.createClient()
输出结果如下:
Starting
Generating Handlers
Starting App
Creating Client
initialize on Thread[AWT-EventQueue-0,6,main] with library path /home/XXXXX/jcef/src/binary_distrib/linux64/bin/lib/linux64
[0413/135633:ERROR:icu_util.cc(157)] Invalid file descriptor to ICU data received.
[0413/135633:FATAL:content_main_runner.cc(700)] Check failed: base::i18n::InitializeICU().
#0 0x7ff8fa94a62e base::debug::StackTrace::StackTrace()
#1 0x7ff8fa95f88b logging::LogMessage::~LogMessage()
#2 0x7ff8fd7588d4 content::ContentMainRunnerImpl::Initialize()
#3 0x7ff8fa857962 CefContext::Initialize()
#4 0x7ff8fa85775b CefInitialize()
#5 0x7ff8fa80a9b8 cef_initialize
#6 0x7ff8d6946914 CefInitialize()
#7 0x7ff8d690200f Java_org_cef_CefApp_N_1Initialize
#8 0x7ff8de207994 <unknown>
感谢所有帮助。谢谢
最佳答案
我也遇到了很多问题,直到我创建了指向 "icudtl.dat"
、"natives_blob.bin"
和 "snapshot_blob 的符号链接(symbolic link).bin"
在 $jdk/bin 目录
下,而不是 $jdk/jre/bin
。
现在我不再收到此错误。
使用 https://bitbucket.org/chromiumembedded/java-cef/wiki/BranchesAndBuilding 中的示例
我改变了这个...
$ sudo ln -s /path/to/java-cef/src/third_party/cef/linux64/Resources/icudtl.dat /usr/lib/jvm/java-8-oracle/jre/bin/icudtl.dat
$ sudo ln -s /path/to/java-cef/src/third_party/cef/linux64/Debug/natives_blob.bin /usr/lib/jvm/java-8-oracle/jre/bin/natives_blob.bin
$ sudo ln -s /path/to/java-cef/src/third_party/cef/linux64/Debug/snapshot_blob.bin /usr/lib/jvm/java-8-oracle/jre/bin/snapshot_blob.bin
为此...
$ sudo ln -s /path/to/java-cef/src/third_party/cef/linux64/Resources/icudtl.dat /usr/lib/jvm/java-8-oracle/bin/icudtl.dat
$ sudo ln -s /path/to/java-cef/src/third_party/cef/linux64/Debug/natives_blob.bin /usr/lib/jvm/java-8-oracle/bin/natives_blob.bin
$ sudo ln -s /path/to/java-cef/src/third_party/cef/linux64/Debug/snapshot_blob.bin /usr/lib/jvm/java-8-oracle/bin/snapshot_blob.bin
关于java - JCEF ICU 检查失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36609206/