JavaFX,Gluon:HTML文件未从APK

时间:2016-02-12 10:26:02

标签: java android javafx gluon

我在安装Gluon插件后在Intellij Idea上有一个Gluon JavafX项目,我在JavaFX的Webkit浏览器中加载一些静态HTML文件。

现在,当我直接启动JavaFX应用程序时,我可以看到正在加载的HTML,但是当我创建APK时,我看不到正在加载的HTML。我尝试了两条路径,html/index.htmlindex.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文件中显示静态文件的屏幕截图:

enter image description here

那么为什么当我打开APK时我才看到黑屏。我只是将“Hello world”放在body的{​​{1}}中,即使没有显示。你能帮忙的话,我会很高兴。谢谢。

更新

使用adb的错误日志:

index.html

1 个答案:

答案 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);
}