2016-05-21 26 views
7

Desidero caricare un file HTML nello WebView della mia applicazione JavaFX. Il file si trova nella directory del mio progetto, all'interno del pacchetto webviewsample.Gestione risorse JavaFX: caricamento di file HTML in WebView

Ho usato il seguente codice:

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

Ma viene generata un'eccezione dicendo:

Eccezione nel metodo start applicazione java.lang.reflect.InvocationTargetException

risposta

11

Si ottiene questa eccezione perché la variabile url è nullo su questa riga:

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

Sono disponibili diverse opzioni con getResource():

Se la risorsa è la stessa directory della classe, quindi è possibile utilizzare

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

Utilizzando inizio barra ("/") indica il percorso relativo alla radice del progetto.:

Nel tuo caso particolare, se la risorsa è memorizzato nel pacchetto webviewsample, è possibile ottenere la risorsa come:

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

Utilizzando un inizio dot-slash ("./") relativi mezzi percorso al percorso della classe:

immaginare che si rclass è memorizzato in pacchetto webviewsample, e la vostra risorsa (map.html) è memorizzato in una sottodirectory res. È possibile utilizzare questo comando per ottenere l'URL:

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

Sulla base di questo, se la vostra risorsa è nella stessa directory con la classe, allora:

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

e

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

sono equivalenti.

Per ulteriori informazioni è possibile verificare the documentation of getResource().

+0

Grazie. Problema risolto –

+0

Risposta molto bella! – GOXR3PLUS

Problemi correlati