Проверка JCEF ICU не удалась

Кажется, я постоянно сталкиваюсь со стеной, заставляя хром работать с JCEF в затмении. Мне удалось добраться до точки, где обнаружены собственные функции, но я все еще не могу завершить инициализацию. Я установил переменную LD_PRELOAD. Я использую класс MainFrame.java и пользовательский код Scala и сталкиваюсь с одной и той же проблемой в каждом из них. Есть ли способ решить эту проблему?

система:

  • ОС: Ubuntu 16.04

  • JCEF версия 3

  • CEF версия 3

  • Java JDK 8

Структура и конфигурация:

Все находится под структурой бинарного распределения. Я импортировал jars как библиотеку, добавил путь к собственной библиотеке jar 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>

Вся помощь приветствуется. Спасибо

3 ответа

Решение

У меня было много проблем с этим, пока я не создал символические ссылки на "icudtl.dat", "natives_blob.bin" а также "snapshot_blob.bin" под $jdk/bin directory, вместо $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

Решение, dvlcube дал @ dvlcube, работает, но это не удобно. Вы можете добавить дополнительную логику для определения среды пользователя и, если это Linux, вы можете скопировать необходимые файлы - пример:

Вместо копирования вы также можете создать символические ссылки:

Если вы не хотите указывать связанные с переменными среды Linux перед запуском, вы также можете ввести эти переменные (например, LD_LIBRARY_PATH а также LD_PRELOAD) во время выполнения:

Храните библиотеку и ресурсы вместе

CEF ожидает Resources содержимое находится в той же папке, где libcef.dll/.so является. Связано с библиотекой, но не с исполняемым файлом.

Рассмотрим присоединиться Resources а также Release папки раздачи CEF вместе.

Другие вопросы по тегам