我正在尝试从不同的项目创建本机图像,但我陷入了特定的情况。 该项目使用 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 命令似乎没有效果吗?
提前感谢您的回答
我通过添加 --add-export javafx.graphics/com.sun.javafx.application=ALL-UNNAMED 来修复它