如何使用GraalVM和JavaFX在Maven中编译本机映像?

如何使用GraalVM和JavaFX在Maven中编译本机映像?,java,linux,maven,javafx,graalvm,Java,Linux,Maven,Javafx,Graalvm,我有一个JavaFX项目,希望使用GraalVM Java虚拟机和相关的本机映像工具将其编译成Linux二进制文件。我正在使用GraalVM Java 11版本20.1.0,以及通过Maven添加的本机Image Maven插件来实现这一点 com.oracle.substratevm 原生图像maven插件 19.2.1 示例:NewMain 样品 -H:reflectionConfiguration文件=/home/user/Documents/Projects/TestProject/s

我有一个JavaFX项目,希望使用GraalVM Java虚拟机和相关的本机映像工具将其编译成Linux二进制文件。我正在使用GraalVM Java 11版本20.1.0,以及通过Maven添加的本机Image Maven插件来实现这一点


com.oracle.substratevm
原生图像maven插件
19.2.1
示例:NewMain
样品
-H:reflectionConfiguration文件=/home/user/Documents/Projects/TestProject/src/main/java/sample/reflect-config.json-H:+ReportExceptionStackTraces
本地映像
包裹
最初,我收到一个错误,说明
警告:由于在没有配置的情况下使用反射,正在中止独立映像生成。
我使用本机映像跟踪代理生成反射的配置文件, 我将其传递到编译器插件中,如下所示:
-H:reflectionConfiguration文件=/home/user/Documents/Projects/TestProject/src/main/java/sample/reflect-config.json-H:+ReportExceptionStackTraces

我还启用了堆栈跟踪异常报告

现在,当我尝试编译为本机映像时,我发现与本机库的使用有关的以下错误:

Warning: System method java.lang.System.loadLibrary invoked at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:163)
Warning: System method java.lang.System.loadLibrary invoked at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:177)
Warning: Aborting stand-alone image build due to loading native libraries without configuration.
com.oracle.svm.hosted.FallbackFeature$FallbackImageRequest: System method java.lang.System.loadLibrary invoked at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:163)
System method java.lang.System.loadLibrary invoked at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:177)
Aborting stand-alone image build due to loading native libraries without configuration.
    at com.oracle.svm.hosted.FallbackFeature.afterAnalysis(FallbackFeature.java:293)
    at com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$9(NativeImageGenerator.java:741)
    at com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:70)
    at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:741)
    at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:538)
    at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:451)
    at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
如何配置本机库的使用?在本机图像编译器工具中没有这个选项,我在任何地方都找不到它


我已经设法用本机映像工具编译了其他项目,这意味着这个问题与JavaFX有关。

这样不行。为此,您必须使用Gluons客户端maven插件。它提供了编译后的Java和JavaFX库的特殊版本来实现这一点。严格按照说明操作。那就行了。我经常使用它