Apa*_*ari 8 java resources javafx webview
我想在WebView我的JavaFX应用程序中加载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();
}
Run Code Online (Sandbox Code Playgroud)
但它抛出一个例外说:
Application start方法java.lang.reflect.InvocationTargetException中的异常
DVa*_*rga 14
您得到此异常,因为url此行上的变量为null:
String url = WebViewSample.class.getResource("/map.html").toExternalForm();
Run Code Online (Sandbox Code Playgroud)
您有以下几种选择getResource():
如果资源与类的目录相同,则可以使用
String url = WebViewSample.class.getResource("map.html").toExternalForm();
Run Code Online (Sandbox Code Playgroud)
使用开始斜杠("/")表示项目根目录的相对路径.:
在您的特定情况下,如果资源存储在webviewsample包中,您可以将资源获取为:
String url = WebViewSample.class.getResource("/webviewsample/map.html").toExternalForm();
Run Code Online (Sandbox Code Playgroud)
使用起始点斜杠("./")表示类路径的相对路径:
想象一下,你的rclass存储在包中webviewsample,你的resource(map.html)存储在一个子目录中res.您可以使用此命令获取URL:
String url = WebViewSample.class.getResource("./res/map.html").toExternalForm();
Run Code Online (Sandbox Code Playgroud)
基于此,如果您的资源与您的类位于同一目录中,则:
String url = WebViewSample.class.getResource("map.html").toExternalForm();
Run Code Online (Sandbox Code Playgroud)
和
String url = WebViewSample.class.getResource("./map.html").toExternalForm();
Run Code Online (Sandbox Code Playgroud)
是等价的.
如需进一步阅读,您可以查看文档getResource().
| 归档时间: |
|
| 查看次数: |
6753 次 |
| 最近记录: |