JavaFX WebEngine - не удается загрузить firebug-lite.js, который хранится локально - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь создать своего рода класс-оболочку для создания приложений, использующих 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 илиКакой-то другой отладчик?

...