javafx - 带有 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)
解决方案
推荐阅读
- java - 是否可以将 Xamarin.forms 代码作为库添加到现有的本机 Android Studio 应用程序?
- node.js - 无法返回 JWT 令牌
- git - 如何使用令牌将图像推/拉到私有存储库
- node.js - 如何在节点中按顺序从循环中返回数据
- wordpress - 帐户登录页面上的 Woocommerce 移动通知
- javascript - 如何在具有特定长度的数组中均匀分布元素
- python-3.x - imputer = imputer.fit(X[:,1:3]) 的 X 代表什么, imputer.fit(X[:,1:3]) 是什么意思?
- azure - New-AzADApplication:密钥凭据结束日期无效。PowerShell 中的错误
- python - 如何在列表值中定位非常具体的符号?
- angular - Ionic 4 - 点击事件不在浏览器堆栈上工作,但在浏览器上工作