当前位置: 首页 > 知识库问答 >
问题:

为什么我的JavaFX应用程序没有显示Web浏览器?

姚星河
2023-03-14

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

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

}

这是模块信息。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

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

为什么应用程序无法正常运行?

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

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

为什么当我使用jpack、安装dmg并运行Mac OS应用程序时应用程序不起作用?

共有1个答案

龙洛城
2023-03-14

openjfx的部分。CLI模块化的运行时映像io文档演示了以下要点,并提供了用于编译、链接、打包和执行应用程序的命令行参数示例。

我建议您在您的环境中使用链接的openjfx演示,然后对您的项目进行同样的尝试。

需要解决的一些问题:

>

  • e、 g.不要将jmods传递给java命令

当您有module-info.java.时,java/javac不需要添加模块

  • 对于jpack,只需在--add-模块中列出您的应用程序模块,您不需要列出javafx包,因为它可以从您的mode-info中解决这个问题。

您的lib目录不一致,请始终使用相同(正确)的目录:

  • 有时使用库,有时使用库

提供一个onError处理程序。

使用jpackage时,您应该只有JavaFX mods。

  • 你不需要mods和SDKlib,只使用mods。

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

  • JavaFX应用程序与Jpack不工作
 类似资料:
  • 这应该是一个相对简单的问题,但它让我发疯。我正在尝试在JavaFX中创建扫雷器(主要用于练习),但我甚至无法显示一个简单的矩形。我以前运行过一次游戏,但我试图使游戏更加抽象,因此更容易编码,但我遇到了不显示任何问题。 我消除了所有无关的代码,使其尽可能简单。我基本上是在尝试创建一个名为Box的具有特定颜色和大小的矩形,将框添加到窗格中,并显示窗格。为了使Box成为可以在窗格上显示的节点,我使Box

  • 我正在尝试使用CSS边框在GUI(fxml)上显示墙。getStyleClass()。add()但它们没有出现。 我正在使用一个开关,将相应的样式类添加到单元格中。 Java代码: CSS代码: GUI事后图片:结果

  • 我目前正在努力使用erlang的OTP观察者。我的应用程序——gen_server和主管——运行良好,但是当我试图使用观察者来查看进程时,我只能在观察者GUI的“应用程序”选项卡中查看“内核”。 这些是导致节点连接的命令,但仅此而已: ------------------------观察家------------------------ /home/erlang#erl-pa ebin/-snam

  • 我有一个java应用程序,它在JTabbedPane上加载并显示一个applet。所以基本上GUI是: 小程序-- 我已经在JFrame类中放入了这一标准行: 下面是我在 JFrame 类中的方法,它应该在窗口关闭时调用: 然后,在我的Tabbed Pane类中,我有一个管理Applets的arrayList: 我循环遍历JPanels的ArrayList,如下所示: JPanel类中的stopG

  • 我正在使用JBoss开发我的第一个Web应用程序,并以Eclipse Luna和Windfly作为服务器。在WEB-INF中,我找不到web.xml文件。一切正常,应用程序正常工作,但是web.xml设置在哪里?如何更改,例如,类URL关联?请注意,我在编码的类中看不到任何注释。

  • 我在代号一中开发了一个应用程序。在模拟器中,该应用程序可在iPhone和Android手机上运行。现在我在手机上安装了该应用程序。它在不同的Android手机上完美运行。然后我把它安装在一部苹果手机上。我可以安装它,但后来我尝试启动应用程序,并出现一个加载屏幕,它只是加载,没有其他事情发生。 我没有太多更改方法。我只是添加了。 在 方法中,我为 OAuth2 登录名创建登录类的对象,然后将必要的数