2016-05-21 68 views
7

我想在我的JavaFX應用程序的WebView中加載HTML文件。該文件位於我的項目目錄中,位於webviewsample包內。JavaFX資源處理:在WebView中加載HTML文件

我用下面的代碼:

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

回答

11

由於您的url變量在該行上爲null,因此會發生此異常:

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

是等同的。

要進一步閱讀,你可以檢查the documentation of getResource()

+0

謝謝。已解決的問題 –

+0

非常好的答案! – GOXR3PLUS