首页 > 解决方案 > 带有 javafx 13 的非模块化 java:install4j VM 参数

问题描述

JAVAFX 的 Install4J VM 参数似乎没有传递给 JVM

对于依赖于 JAVAFX 的非模块化应用程序,建议的方法是添加

"--module-path ${PATH_TO_FX} --add-modules ALL-MODULE-PATH"

或 java 命令行的特定模块。这工作正常。但是,当使用 install4j 创建安装程序并将其包含在安装程序的 Java 调用 VM 参数字段中时,应用程序不会启动并报告error:java.lang.RuntimeException: No toolkit found

这是自更新到 Java 11+ 以来的新行为(鉴于模块化和 JavaFX 分离)。由于其他原因,我们还不想模块化整个应用程序。该代码在 Eclipse 中运行良好,并且可以通过手动命令行或 bat 启动。我们还尝试包含带有这些参数的 VMoptions 文件,但无济于事。

当前运行 AdoptOpenJDK-13、JAVAFX-13 和 Install4J 7.0.12

--module-path ${PATH_TO_FX} --add-modules ALL-MODULE-PATH

我们如何创建 install4j 安装程序,它与我们的命令行具有相同的启动行为——识别 javafx——同时仍然不模块化整个应用程序?

命令行参数是:

"--module-path ${PATH_TO_FX} --add-modules ALL-MODULE-PATH"

运行 install4j 启动器时的扩展错误是:

java.lang.RuntimeException: No toolkit found
    at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:272)
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
    at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
    at java.base/java.lang.Thread.run(Thread.java:830)

标签: javafxjvminstall4j

解决方案


推荐阅读