带有 JavaFX 的 GraalVM 本机映像:帮助实现 com.sun.javafx.application.LauncherImpl

问题描述 投票:0回答:1

我正在尝试从不同的项目创建本机图像,但我陷入了特定的情况。 该项目使用 JavaFX,这是它正常工作所必需的。

问题的核心在于,在进程结束时,一旦启动了可执行文件,它就找不到 javafx.graphics 模块中存在的基本函数 com.sun.javafx.application.LauncherImpl

下载 JavaFX 的便携式版本后,我可以使用以下命令将其模块集成到本机映像中:native-image --module-path $env:MODULE:PATH (或使用 cmd %MODULE_PATH%,结果是相同)--add-modules [javafx.modules] --list-modules

但是,通过以下命令创建可执行文件后:native-image --module-path $env:MODULE_PATH --add-modules [javafx.modules] --no-fallback -cp "classes;lib/*" com.app.一旦新的可执行文件启动,它就会直接崩溃并给出以下错误:“线程“main”java.lang.NoClassDefFoundError中的异常:com.sun.javafx.application.LauncherImpl at com.app.Main.main (Main. java:34) 在 [电子邮件受保护]/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)

由于这些模块已通过第一个命令清楚地指示为存在并集成到 GraalVM 中,因此您知道为什么创建本机映像时的 -add-modules 命令似乎没有效果吗?

提前感谢您的回答

java javafx graalvm graalvm-native-image
1个回答
0
投票

我通过添加 --add-export javafx.graphics/com.sun.javafx.application=ALL-UNNAMED 来修复它

© www.soinside.com 2019 - 2024. All rights reserved.