簡體   English   中英

JavaFX,Gluon:未從APK中的Java代碼加載HTML文件

[英]JavaFX, Gluon : HTML file not loaded from Java code in APK

安裝Gluon插件后,我在Intellij Idea上有了一個Gluon JavafX項目,其中在JavaFX的Webkit瀏覽器中加載了一些靜態HTML文件。

現在,當我直接啟動JavaFX應用程序時,可以看到正在加載HTML,但是在創建APK時,卻看不到正在加載HTML。 我嘗試了兩個路徑,即html/index.htmlindex.html ,但是對於兩個APK都沒有在應用程序中顯示任何內容,它只會加載黑屏。

根據上一個關於Gluon的問題,我已經將靜態內容移動到資源目錄中。 這大大增加了APK的大小,這證實了靜態內容在APK內部。

這是主類:

@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”放在index.html body中,即使未顯示。 你能幫忙的話,我會很高興。 謝謝。

更新資料

錯誤日志與adb:

: QuantumRenderer: shutdown
02-12 12:49:24.539 13109 13132 W System.err: java.lang.reflect.InvocationTargetException
02-12 12:49:24.540 13109 13132 W System.err:    at java.lang.reflect.Method.invoke(Native Method)
02-12 12:49:24.540 13109 13132 W System.err:    at javafxports.android.DalvikLauncher$1.run(DalvikLauncher.java:188)
02-12 12:49:24.540 13109 13132 W System.err:    at java.lang.Thread.run(Thread.java:818)
02-12 12:49:24.540 13109 13132 W System.err: Caused by: java.lang.RuntimeException: Exception in Application start method
02-12 12:49:24.540 13109 13132 W System.err:    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
02-12 12:49:24.540 13109 13132 W System.err:    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$137(LauncherImpl.java:182)
02-12 12:49:24.540 13109 13132 W System.err:    at com.sun.javafx.application.LauncherImpl.access$lambda$1(LauncherImpl.java)
02-12 12:49:24.540 13109 13132 W System.err:    at com.sun.javafx.application.LauncherImpl$$Lambda$2.run(Unknown Source)
02-12 12:49:24.540 13109 13132 W System.err:    ... 1 more
02-12 12:49:24.540 13109 13132 W System.err: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.net.URL.toExternalForm()' on a null object reference
02-12 12:49:24.541 13109 13132 W System.err:    at com.rewetest.MyBrowser.<init>(MyBrowser.java:69)
02-12 12:49:24.541 13109 13132 W System.err:    at com.rewetest.Main.start(Main.java:30)
02-12 12:49:24.541 13109 13132 W System.err:    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$144(LauncherImpl.java:863)
02-12 12:49:24.541 13109 13132 W System.err:    at com.sun.javafx.application.LauncherImpl.access$lambda$8(LauncherImpl.java)
02-12 12:49:24.541 13109 13132 W System.err:    at com.sun.javafx.application.LauncherImpl$$Lambda$9.run(Unknown Source)
02-12 12:49:24.541 13109 13132 W System.err:    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$157(PlatformImpl.java:326)

如果您使用

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM