JavaFX,Gluon:HTML文件未从APK中的Java代码加载

JavaFX,Gluon:HTML文件未从APK中的Java代码加载,java,android,javafx,gluon,Java,Android,Javafx,Gluon,在安装了Glon插件之后,我在Intellij Idea上有一个Glon JavafX项目,我正在JavafX的Webkit浏览器中加载一些静态HTML文件 现在,当我直接启动JavaFX应用程序时,我可以看到加载的HTML,但是当我创建APK时,我看不到加载的HTML。我尝试了两种路径,即html/index.html和index.html,但对于这两种路径,APK都没有在应用程序中显示任何内容,只是加载了一个黑屏 根据前面关于Gluon的问题,我已经移动了resources目录中的静态内容。

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

现在,当我直接启动JavaFX应用程序时,我可以看到加载的HTML,但是当我创建APK时,我看不到加载的HTML。我尝试了两种路径,即
html/index.html
index.html
,但对于这两种路径,APK都没有在应用程序中显示任何内容,只是加载了一个黑屏

根据前面关于Gluon的问题,我已经移动了resources目录中的静态内容。这大大增加了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时,我只看到一个黑屏。我只是在
index.html
body
中添加了“Hello world”,即使没有显示。任何帮助都很好。多谢各位

更新

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)
:QuantumRenderer:关闭
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(本机方法)
02-12:49:24.540 13109 13132 W System.err:at javafxports.android.DalvikLauncher$1.run(DalvikLauncher.java:188)
02-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:原因:java.lang.RuntimeException:应用程序启动方法中的异常
02-12 12:49:24.540 13109 13132 W System.err:在com.sun.javafx.application.launchempl.launcheapplication1(launchempl.java:917)
02-12:49:24.540 13109 13132 W System.err:在com.sun.javafx.application.launchempl.lambda$launchApplication$137(launchempl.java:182)
02-12 12:49:24.540 13109 13132 W System.err:在com.sun.javafx.application.launchempl.access$lambda$1(launchempl.java)
02-12 12:49:24.540 13109 13132 W System.err:位于com.sun.javafx.application.launchempl$$Lambda$2.run(未知源)
02-12 12:49:24.540 13109 13132 W系统错误:。。。还有一个
02-12 12:49:24.540 13109 13132 W System.err:原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String java.net.URL.toExternalForm()”
02-12 12:49:24.5413109 13132 W System.err:at com.rewetest.MyBrowser.(MyBrowser.java:69)
02-12:49:24.5413109 13132 W System.err:at com.rewetest.Main.start(Main.java:30)
02-12 12:49:24.5413109 13132 W System.err:在com.sun.javafx.application.launchempl.lambda$launchApplication1$144(launchempl.java:863)
02-12 12:49:24.5413109 13132 W System.err:在com.sun.javafx.application.launchempl.access$lambda$8(launchempl.java)
02-12 12:49:24.541 13109 13132 W System.err:位于com.sun.javafx.application.launchempl$$Lambda$9.run(未知源)
02-12 12:49:24.5413109 13132 W System.err:在com.sun.javafx.application.PlatformImpl.lambda$runAndWait$157(PlatformImpl.java:326)
如果您使用

webEngine.load(getClass().getResource("index.html").toExternalForm()); 
您需要将资源放在与该类相同的包中:

src/main/resources/com/<your package>
这将解决NPE问题

我没有在您的代码中看到它,但我认为您正在将
WebView
添加到场景中:

public MyBrowser() {
     ...
     getChildren().add(webView);
}

你在桌面上试过了吗?如果它不能在桌面上工作,那是因为一个已知的bug。@JoséPereda:如果我只有一个JavaFX项目,没有Gluon,那么它就可以正常工作。现在,当我将项目作为应用程序加载时,我只得到一个错误,没有指定Android SDK。尽管我已经在jfxMobiel{android{//here}}中指定了@JoséPereda:我可以为您提供Main和MyBrowser的Java文件。你们能试着用你们自己的html,看看什么路径有效吗?你们能不能在桌面上运行它?为了在Android上运行,首先它也应该在桌面上运行。只需选择Gradle选项卡上的
运行
任务,看看是否有效。如果没有,请先解决问题。我可以在桌面上运行。。没问题。如果我把它放在src/java/resources/com/package name中,就像前面你说的,你看不到java文件,那么APK不会把它取出来。我必须把它放在src/main/resources中,由APK接收。我有你在代码中提到的构造函数,在这方面没有问题。
public MyBrowser() {
     ...
     getChildren().add(webView);
}