gpt4 book ai didi

java - 为什么我的 JavaFX 应用程序不显示 Web 浏览器?

转载 作者:行者123 更新时间:2023-12-05 04:35:36 24 4
gpt4 key购买 nike

我有一个带有以下 Java 代码的模块化 JavaFX 应用程序:

package webbrowser;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebView;
import javafx.scene.web.WebEngine;
import javafx.stage.Stage;

public class WebBrowser extends Application {

@Override
public void start(Stage stage) {
WebView browser = new WebView();
WebEngine webEngine = browser.getEngine();
webEngine.load("http://www.oracle.com");
Scene scene = new Scene(browser, 500, 500);
stage.setScene(scene);
stage.show();
}

public static void main(String[] args) {
launch();
}

}

这是 module-info.java 文件:

module webBrowser {
requires javafx.controls;
requires javafx.web;

exports webbrowser;
}

我使用以下命令编译模块化 JavaFX 应用程序:

javac -d out --module-source-path . --module-path $JAVAFX_SDK/libs:$JAVAFX_JMODS --module webBrowser

我使用以下命令打包模块化 JavaFX 应用程序:

jpackage --type dmg --module-path $JAVAFX_JMODS:$JAVAFX_SDK/lib:out --add-modules javafx.controls,javafx.web,javafx.graphics,javafx.media --module webBrowser/webbrowser.WebBrowser

然后我将应用程序保存在我的/Applications 文件夹中(我在 Mac OS 上)并打开该应用程序。该应用程序会打开一个 500x500 的窗口,但它不会呈现任何图形,也不会打开 Web 浏览器。该应用程序只会打开一个白色空白 500x500 窗口。

为什么应用程序不能正常运行?

当我使用 java(并放弃 jpackage)运行应用程序时,应用程序在 JVM 中运行良好,打开 Web 浏览器,然后打开 oracle.com 网页。

java --module-path out:$JAVAFX_JMODS:$JAVAFX_SDK/lib --add-modules javafx.controls,javafx.web --module webBrowser/webbrowser.WebBrowser

为什么当我使用 jpackage、安装 dmg 并运行 Mac OS 应用程序时应用程序无法运行?

最佳答案

openjfx.io 文档中关于 runtime images, modular from CLI 的部分演示了下面概述的一些要点,并提供了用于编译、链接、打包和执行应用程序的命令行参数示例。

我建议您让链接的 openjfx 演示在您的环境中运行,然后在您的项目中尝试同样的方法。

一些需要解决的问题:

  1. jmods 不能在运行时使用,只能在编译或链接时使用。

  2. --add-modules 当您有 module-info.java 时,java/javac 不需要。

    • 对于 jpackage,只需在 --add-modules 中列出您的应用程序模块,您不需要列出 javafx 包,因为它可以从您的模块信息中计算出来。
  3. 您的 lib 目录不一致,始终使用相同(正确)的目录:

    • 有时您使用 lib,有时您使用 libs
  4. 提供一个 onError 处理程序。

  5. 使用 jpackage 时,您应该只有 JavaFX 模组。

    • 您不需要模组和 SDK 库,只使用模组。

要检查的其他要点在以下问题的答案中突出显示:

关于java - 为什么我的 JavaFX 应用程序不显示 Web 浏览器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71012440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com