2016-04-13 51 views
1

Tutulma sırasında JCEF ile kromun çalıştırılmasında sürekli olarak bir duvara karşı geliyorum. Yerel işlevlerin keşfedildiği noktaya ulaşabildim ancak başlatmayı hala tamamlayamıyorum. LD_PRELOAD değişkenini ayarlıyorum. Hem MainFrame.java sınıfını hem de özel Scala kodunu çalıştırıyorum ve her birinde aynı sorunda çalışıyorum. Bunu çözmenin bir yolu var mı?JCEF ICU Kontrolü Başarısız Oldu

Sistem:

  • OS: Ubuntu 16,04

  • JCEF sürüm 3

  • CEF sürüm 3

  • Java JDK 8

Yapısı ve Yapılandırma:

Herşey ikili dağıtım yapısı altında. Kavanozları bir kütüphane olarak ithal ettim, jcef jarma yerel kütüphane yolunu ekledim ve projeme aktardım.

Ben kurulum ortam değişkenleri ile çalışma yapılandırma:

  • Ekran =: 0.0
  • LD_PRELOAD = /path/to/libcef.so
benim kütüphanelerin

Tüm ve *. Pak dosyaları aynı dizinde ve libcef.so'nun bulunduğu yerdeki (ikili dağıtım) krom sanal alanı ve yardımcıları gibi bir alt dizindir. izledikten sonra

Kodu ve Hata

kod başarısız:

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() 

aşağıdaki çıkış sonuçları: Tüm Yardım takdir

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> 

. Bunun yerine $jdk/jre/bin arasında, $jdk/bin directory altında "icudtl.dat", "natives_blob.bin" ve "snapshot_blob.bin" için sembolik yaratana kadar teşekkür

cevap

5

Ben de bu sorun bir sürü vardı.

Artık bu hatayı almıyorum.

... Ben bu değişti https://bitbucket.org/chromiumembedded/java-cef/wiki/BranchesAndBuilding

yılında Buna

$ 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 

örneği kullanarak ...

$ 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

sayesinde bu deneyin ve bunun için üzgünüm –

+0

bildireceğiz. Biraz zaman aldı –

0

Tut kütüphane ve kaynaklar bir araya

CEF libcef.dll/.so aynı klasörde Resources içeriğini bekliyor. Kitaplık ile ilgili, ancak yürütülebilir değil.

CEF dağıtımının birlikte Resources ve Release klasörlerini birleştirmeyi düşünün.

0

@dvlcube'un verdiği çözüm işe yarar, ancak bu rahat değildir. Kullanıcının ortamı algılamak için bazı ekstra mantık ekleyebilir ve bir linux ise Gerekli dosyalar kopyalayabilirsiniz - örnek:

Eğer linux da çevreden ilgili belirtin etmek istemiyorsanız ent değişkenler başlatmadan önce, ayrıca çalışma zamanında bu değişkenleri (gibi LD_LIBRARY_PATH ve LD_PRELOAD) enjekte edebilir