2016-05-21 22 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変数がこの行でヌルであるため、この例外が発生します。

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

関連する問題