Я пытаюсь создать своего рода класс-оболочку для создания приложений, использующих JavaFX WebView для своего графического интерфейса пользователя (я назвал класс Application
), который я могу легко использовать в других своих приложениях (я делаю банку из своей оболочкипроект, а затем банку можно импортировать в любой другой проект).Я предположил, что включение некоторых функций отладки в мою обертку важно, поэтому я скачал каталоги firebug-lite.js и firebug-lite.css версии 1.2 в каталог ./src/firebug/ в папке моего проекта (поэтому интернет не требуется).После нескольких попыток я пришел к следующему коду в Application.debug()
:
public void debug() {
// file is inside the jar, in ./firebug/ directory, so I use getResourceAsStream()
BufferedReader br = new BufferedReader(new InputStreamReader(
getClass().getResourceAsStream("/firebug/firebug-lite.js")));
String line;
String wholeFirebugCode = "";
try {
// reading firebug-lite.js line-by-line, not including \n characters
while ((line = br.readLine()) != null) {
wholeFirebugCode += line;
}
if (wholeFirebugCode.isEmpty()) System.out.println("!");
else {
// everything is OK, file is read, so add firebug to our page
engine.executeScript("document.body.innerHTML += \""+
"<script type='text/javascript'>" +
wholeFirebugCode +
"</script>\"");
}
} catch (IOException e) {
printError(e, "during load of /firebug/firebug-lite.js from within jar (WebEngineApp.jar)");
}
}
Итак, я собрал флягу, проверил, есть ли в нее ./firebug/firebug-lite.js (она есть)этот jar в примере проекта и попытался с этим кодом:
// constructor works fine
Application app = new Application("title of window", path_to_sample_html_page,
width, height, bridge);
app.run();
try {//we wait a few til page is fully loaded (just for sure)
TimeUnit.SECONDS.sleep(5);
} catch (InterruptedException e) {
printError(e, "");
}
// here I check if java-js connection is established and page is loaded. It is
Platform.runLater(app::test);
// here I run the code which cause problem
Platform.runLater(app::debug);
Но это не работает.Я использую Java 8, если это имеет какое-то значение:
Exception in thread "JavaFX Application Thread" netscape.javascript.JSException: SyntaxError: Unexpected identifier 'css'
at com.sun.webkit.dom.JSObject.fwkMakeException(JSObject.java:146)
at com.sun.webkit.WebPage.twkExecuteScript(Native Method)
at com.sun.webkit.WebPage.executeScript(WebPage.java:1509)
at javafx.scene.web.WebEngine.executeScript(WebEngine.java:1005)
at emeshka.webengineapp.Application.debug(Application.java:157)
at Main.lambda$main$0(Main.java:41)
(... etc)
Кажется, что файл читается правильно, я проверил его, войдя в систему.То же самое происходит, если я пытаюсь использовать 'firebug-lite-сжатый.js', и если я использую этот метод кода, включающий:
engine.executeScript(wholeFirebugCode);
Я полностью потерян.Не может быть, что firebug синтаксически неверен.Пример HTML-страницы не содержит JS.Как я могу заставить firebug работать?Я пытался использовать эти решения, которые требуют подключения к Интернету, но они просто не дали никакого эффекта, и никаких ошибок не было показано: Отладка HTML / Javascript в JavaFX WebView , JAVAFX / WebView / WebEngine FireBugLite илиКакой-то другой отладчик?