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

JavaFX资源处理:在WebView中加载HTML文件,java,javafx,webview,resources,Java,Javafx,Webview,Resources,我想在JavaFX应用程序的WebView中加载一个HTMLfile。该文件位于我的项目目录中,在webviewsample包中 我使用了以下代码: public void start(Stage primaryStage) throws Exception { primaryStage.setTitle("WebView test"); WebView browser = new WebView(); WebEngine engine =

我想在JavaFX应用程序的
WebView
中加载一个HTMLfile。该文件位于我的项目目录中,在
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


出现此异常是因为您的
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存储在package
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();