Не удалось загрузить html-файл (из локальной файловой системы) с помощью JxBrowser

Используя JavaFX и Eclipse IDE, я использовал образец приложения от Teamdev для загрузки образца файла (notifications.html из моей файловой системы), но я продолжаю получать ошибку «страница не найдена/DNS».

Рассматриваемый файл, уведомления.html, находится прямо в том же пакете, что и исходный файл, который вызывает его, как показано во фрагменте ниже:

    Scene scene = new Scene(new BorderPane(view), 700, 500);
    primaryStage.setScene(scene);
    primaryStage.show();
    browser.loadURL("notifications.html");

Я думаю, что моя проблема заключается в составлении полного пути, и, поскольку я использую Mac, мне не ясно, как это сделать. Я пытался:

browser.loadURL("Users/myusername/Documents/workspace/jxBrowser/src/application/notifications.html");

Однако это не сработало.


person GregM    schedule 20.06.2017    source источник
comment
Я использую движок JxBrowser Chromium от Teamdev.   -  person GregM    schedule 21.06.2017
comment
Если вы хотите получить файл из исходной папки, вы не можете использовать абсолютный путь. stackoverflow.com/questions/17771919/   -  person Chris    schedule 21.06.2017
comment
Но, как я упоминал в своем исходном посте, использование полного пути также не работает. Согласно документации JxBrowser, метод browser.loadURL() можно использовать для загрузки веб-страницы или html-файла из файловой системы: тот же метод можно использовать для загрузки HTML-файла из локальной файловой системы. Вместо URL вам просто нужно указать абсолютный путь к файлу HTML. Например: browser.loadURL(C:\\path\\index.html); но для Mac, как будет выглядеть строка пути, если html-файл находится в папке Users/‹username›/Documents/source?   -  person GregM    schedule 21.06.2017
comment
Попробуйте file:///Users/Username/Documents/.......   -  person Chris    schedule 21.06.2017
comment
Спасибо. Это сработало, поскольку удалось загрузить html-файл. Однако уведомление, сгенерированное при нажатии кнопки Показать уведомление, не появляется - странно.   -  person GregM    schedule 21.06.2017
comment
Уведомления не отображаются по умолчанию в JxBrowser. Вам нужно зарегистрировать свой собственный NotificationHandler, где вы должны показать свой собственный диалог уведомлений. См. следующую документацию: teamdev.com/downloads /jxbrowser/javadoc/com/teamdev/jxbrowser/   -  person Vladimir    schedule 22.06.2017


Ответы (1)


Вам нужно использовать loadHtml() вместо loadUrl() предположим, что loadHtml выходит в сеть, и вы пытаетесь загрузить URL-адрес из файла на свой компьютер. Прочитайте html из файловой системы в String и передайте его методу loadHtml().

     InputStream urlStream = getClass().getResourceAsStream("/notifications.html");
     String html = null;
     try (BufferedReader urlReader = new BufferedReader(new InputStreamReader (urlStream))) {
         StringBuilder builder = new StringBuilder();
         String row;
         while ((row = urlReader.readLine()) != null) {
             builder.append(row);
         }
         html = builder.toString(); 
     }  catch (IOException e) {
         throw new RuntimeException(e);
     }

     browser.loadHTML(html);

для этого кода ваш html файл должен находиться в папке resources вашего проекта

person fxrbfg    schedule 21.06.2017
comment
Большое спасибо. Это сработало. файл HTML загружается и отображается И работает всплывающее уведомление. При нажатии кнопки «Показать уведомление» на странице всплывает уведомление, а при нажатии «Закрыть уведомление» диалоговое окно закрывается. Как ни странно, когда я использую метод browser.loadURL(file:///Users/username/etc/notifications.html), html-страница загружается и отображается, как и ожидалось, но кнопки уведомлений ничего не делают. См. мой комментарий Крису выше. БЛАГОДАРНОСТЬ! - person GregM; 21.06.2017