2016-05-21 6 views
7

Ich möchte eine HTML-Datei in der WebView meiner JavaFX-Anwendung laden. Die Datei befindet sich in meinem Projektverzeichnis innerhalb des Pakets webviewsample.JavaFX-Ressourcenbehandlung: HTML-Dateien in WebView laden

Ich habe den folgenden Code verwendet:

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(); 
} 

Aber es gibt eine Ausnahme aus den Worten:

Ausnahme in Anwendung Startmethode java.lang.reflect.InvocationTargetException

Antwort

11

Sie erhalten diese Ausnahme, weil Ihre url Variable in dieser Zeile null ist:

String url = WebViewSample.class.getResource("/map.html").toExternalForm(); 

Sie haben mehrere Möglichkeiten mit getResource():

Wenn die Ressource das gleiche Verzeichnis wie die Klasse ist, dann können Sie

String url = WebViewSample.class.getResource("map.html").toExternalForm(); 

Mit Anfang verwenden Strich ("/") bedeutet relativer Pfad zum Projektstamm.:

In Ihrem speziellen Fall, wenn die Ressource in dem webviewsample Paket gespeichert ist, können Sie die Ressource erhalten, wie:

String url = WebViewSample.class.getResource("/webviewsample/map.html").toExternalForm(); 

einen Anfang Punktschrägstrich („./“) bedeutet im Verhältnis Pfad Pfad der Klasse:

Stellen Sie sich vor, dass Sie rclass in Paket webviewsample und Ihre Ressource (map.html) in einem Unterverzeichnis res gespeichert wird. Sie können diesen Befehl verwenden, um die URL zu erhalten:

String url = WebViewSample.class.getResource("./res/map.html").toExternalForm(); 

Auf dieser Basis, wenn Ihre Ressource im gleichen Verzeichnis mit Ihrer Klasse, dann:

String url = WebViewSample.class.getResource("map.html").toExternalForm(); 

und

String url = WebViewSample.class.getResource("./map.html").toExternalForm(); 

sind gleichwertig.

Für weitere Informationen können Sie überprüfen the documentation of getResource().

+0

Vielen Dank. Problem gelöst –

+0

Sehr nette Antwort! – GOXR3PLUS