我在安装Gluon插件后在Intellij Idea上有一个Gluon JavafX项目,我在JavaFX的Webkit浏览器中加载一些静态HTML文件。
现在,当我直接启动JavaFX应用程序时,我可以看到正在加载的HTML,但是当我创建APK时,我看不到正在加载的HTML。我尝试了两条路径,html/index.html
和index.html
,但是对于这两个APK都没有在应用中显示任何内容,它只会加载黑屏。
根据上一个关于Gluon的问题,我在资源目录中移动了静态内容。这大大增加了APK的大小,这确认了静态内容在APK中。
这是Main类:
@Override
public void start(Stage primaryStage) throws Exception{
primaryStage.setTitle("Rewe - Frontend");
java.net.CookieManager manager = new java.net.CookieManager();
java.net.CookieHandler.setDefault(manager);
myBrowser = new MyBrowser();
scene = new Scene(myBrowser, 1080, 1920);
primaryStage.setScene(scene);
primaryStage.setFullScreen(true);
primaryStage.show();
}
Mybrowser.Java:
public class MyBrowser extends Region {
final String hellohtml = "index.html";
WebView webView = new WebView();
WebEngine webEngine = webView.getEngine();
public MyBrowser() {
webEngine.getLoadWorker().stateProperty().addListener((observable, oldValue, newValue) -> {
if (newValue == Worker.State.SUCCEEDED) {
JSObject window = (JSObject) webEngine.executeScript("window");
window.setMember("app", this);
}
});
URL urlHello = getClass().getResource(hellohtml);
webEngine.load(urlHello.toExternalForm());
webView.setPrefSize(1080, 1920);
webView.setContextMenuEnabled(false);
}
以下是在相应文件夹和Java文件中显示静态文件的屏幕截图:
那么为什么当我打开APK时我才看到黑屏。我只是将“Hello world”放在body
的{{1}}中,即使没有显示。你能帮忙的话,我会很高兴。谢谢。
更新
使用adb的错误日志:
index.html
答案 0 :(得分:0)
如果您使用
webEngine.load(getClass().getResource("index.html").toExternalForm());
您需要将资源放在与该类相同的包中:
src/main/resources/com/<your package>
或者如果您想将其放在不同的文件夹中,请使用“/”作为资源的根目录:
webEngine.load(getClass().getResource("/html/index.html").toExternalForm());
这将解决NPE。
我在您的代码中没有看到它,但我认为您正在将WebView
添加到场景中:
public MyBrowser() {
...
getChildren().add(webView);
}