Обработка ресурсов JavaFX: загрузка файлов HTML в WebView
Я хочу загрузить HTML-файл в WebView
моего приложения JavaFX. Файл находится в моей директории проекта, внутри webviewsample
пакет.
Я использовал следующий код:
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("WebView test");
WebView browser = new WebView();
WebEngine engine = browser.getEngine();
String url = WebViewSample.class.getResource("/map.html").toExternalForm();
engine.load(url);
StackPane sp = new StackPane();
sp.getChildren().add(browser);
Scene root = new Scene(sp);
primaryStage.setScene(root);
primaryStage.show();
}
Но это исключение говорит:
Исключение в методе запуска приложения java.lang.reflect.InvocationTargetException
1 ответ
Вы получаете это исключение, потому что ваш url
переменная равна нулю в этой строке:
String url = WebViewSample.class.getResource("/map.html").toExternalForm();
У вас есть несколько вариантов с getResource()
:
Если ресурс находится в том же каталоге, что и класс, то вы можете использовать
String url = WebViewSample.class.getResource("map.html").toExternalForm();
Использование начала косой черты ("/") означает относительный путь к корню проекта.:
В вашем конкретном случае, если ресурс хранится в webviewsample
пакет, вы можете получить ресурс как:
String url = WebViewSample.class.getResource("/webviewsample/map.html").toExternalForm();
Использование начинающейся точки с косой чертой ("./") означает относительный путь к пути класса:
Представьте, что ваш rclass хранится в упаковке webviewsample
и ваш ресурс (map.html
) хранится в подкаталоге res
, Вы можете использовать эту команду для получения URL:
String url = WebViewSample.class.getResource("./res/map.html").toExternalForm();
Исходя из этого, если ваш ресурс находится в одном каталоге с вашим классом, то:
String url = WebViewSample.class.getResource("map.html").toExternalForm();
а также
String url = WebViewSample.class.getResource("./map.html").toExternalForm();
эквивалентны.
Для дальнейшего чтения вы можете проверить документациюgetResource()
,