SIGSEGV во время проверки Firebug Lite в WebView
В настоящее время я пытаюсь создать приложение JavaFX WebView, которое отображает карту Leaflet. Я также добавил новый слой для API FreeDraw. При инициализации карты я вызываю функцию JavaScript через:
callVoid("initializeMap");
CallVoid и помощники:
public void callVoid(String functionName, Object... args) {
if(!functionExists(functionName)) {
throw new NoSuchMethodError(functionName);
}
getWindow().call(functionName, args);
}
protected JSObject getWindow() {
if(window == null) {
window = (JSObject) getWebEngine().executeScript("window");
}
return window;
}
Теперь, когда приложение запускается, я могу переключать консоль Firebug Lite с помощью Shift
+ Enter
, который выглядит следующим образом:
Как видите, я вошел в map
Переменная в консоли, и он показывает объект карты из JavaScript. Тем не менее, когда я хочу осмотреть window
объект в JavaScript, программа завершается со следующим сообщением о сбое в Eclipse:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fc8aecbb250, pid=1870, tid=0x00007fc8bd2e9700
#
# JRE version: OpenJDK Runtime Environment (8.0_151-b12) (build 1.8.0_151-8u151-b12-1~deb9u1-b12)
# Java VM: OpenJDK 64-Bit Server VM (25.151-b12 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C [libjfxwebkit.so+0x11b6250]
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/croemheld/Repositories/croemheld/hs_err_pid1870.log
Compiled method (c1) 86590 905 1 java.lang.reflect.Method::getModifiers (5 bytes)
total in heap [0x00007fc92d362f10,0x00007fc92d3631a8] = 664
relocation [0x00007fc92d363038,0x00007fc92d363060] = 40
main code [0x00007fc92d363060,0x00007fc92d3630e0] = 128
stub code [0x00007fc92d3630e0,0x00007fc92d363170] = 144
metadata [0x00007fc92d363170,0x00007fc92d363178] = 8
scopes data [0x00007fc92d363178,0x00007fc92d363180] = 8
scopes pcs [0x00007fc92d363180,0x00007fc92d3631a0] = 32
dependencies [0x00007fc92d3631a0,0x00007fc92d3631a8] = 8
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Я посмотрел на stackru, но получается команда ulimit -c -l
на моей машине возвращается:
core file size (blocks, -c) unlimited
max locked memory (kbytes, -l) 64
Так что я довольно запутался, как SIGSEGV
происходит только при попытке отладки переменных или объектов через window
объект в JavaScript. Смысл, даже когда я установил член в обычай BrowserEngine
, что только должно помочь при вызове методов Java из JavaScript, следующим образом:
getWindow().setMember("browserEngine", this);
Я не могу получить доступ к browserEngine
объект через window.browserEngine
или просто browserEngine
потому что как несуществующие объекты или переменные, так и объекты или переменные, доступ к которым осуществляется через объект окна, введенный в консоли, приводят к приведенному выше SIGSEGV
ошибка.
Как это исправить?
Я использую версию Firebug Lite 1.2 для отладки в WebView
приложение.