2016-04-13 8 views
1

私は、クロムが日食でJCEFで走っている間、壁に向かって絶えず来ているようです。ネイティブ関数が検出されたにもかかわらず、まだ初期化を完了できない時点に到達できました。 LD_PRELOAD変数を設定します。私はMainFrame.javaクラスとカスタムScalaコードの両方を実行していて、それぞれ同じ問題に遭遇しています。これを解決する方法はありますか?JCEF ICUチェックが失敗しました

システム:

  • OS:Ubuntuの16.04

  • JCEFバージョン3

  • CEFバージョン3

  • のJava JDK 8

構造と構成:

すべてがバイナリ配布構造の下です。 jarsをライブラリとしてインポートし、jcef jarにネイティブライブラリのパスを追加し、それをプロジェクトにインポートしました。

Iセットアップ環境変数と実行構成:

  • DISPLAY =:0.0
  • LD_PRELOAD = /path/to/libcef.so
私のライブラリの

全てと*。 pakファイルはchromeサンドボックスやヘルパーと同じディレクトリとlibcef.soがあるサブディレクトリ(バイナリディストリビューション)にあります。次の後

コードとエラー

コードは失敗します。

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> 

。私が代わりに$jdk/jre/binの、$jdk/bin directory"icudtl.dat""natives_blob.bin""snapshot_blob.bin"にシンボリックリンクを作成するまでのおかげ

答えて

5

私は、あまりにもこれで多くの問題がありました。

もうこのエラーは発生しません。

...私はこれを変更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 
+0

おかげで、私はこれを試してみて、あなたはそのことについて申し訳ありません –

+0

をお知らせします。しばらくかかった –

0

キープライブラリとリソースを一緒

CEFはlibcef.dll/.soがある同じフォルダ内にあるResources内容を期待しています。ライブラリに関連しますが、実行可能ファイルには関連しません。

CEF配布のResourcesReleaseフォルダを結合することを検討してください。

0

@dvlcubeが解決策を提示しましたが、快適ではありません。あなたは、ユーザーの環境を検出するために、いくつかの余分なロジックを追加することができ、それは、Linuxの場合は、必要なファイルをコピーすることができます - 例:

代わりのコピーあなたもシンボリックリンクを作成することができます。

あなたはLinuxのenvironmに関連する指定しない場合ENT変数が起動する前に、あなたはまた、実行時にこれらの変数(のようなLD_LIBRARY_PATHLD_PRELOAD)を注入することができます

関連する問題