安装 Gluon 插件后,我在 Intellij Idea 上有一个 Gluon JavafX 项目,其中我在 JavaFX 的 Webkit 浏览器中加载了一些静态 HTML 文件。
现在,当我直接启动 JavaFX 应用程序时,我可以看到正在加载的 HTML,但是当我创建 APK 时,我看不到正在加载的 HTML。我尝试了两个路径,即html/index.html
和index.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();
}
我的浏览器.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
其中index.html
,即使没有显示。你能帮忙的话,我会很高兴。谢谢你。
更新
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)