JavaFX资源处理:在WebView中加载HTML文件

9
我希望能在我JavaFX应用的WebView中加载一个HTML文件。该文件位于我的项目目录中,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个回答

18

您之所以会收到此异常,是因为在这行代码中,您的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();

使用起始点斜杠("./")表示相对于类路径的相对路径

假设您的类存储在包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()的文档


非常好的答案! - GOXR3PLUS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接