gpt4 book ai didi

java - 如何使用 GraalVM 和 JavaFX 在 Maven 中编译 native 镜像?

转载 作者:行者123 更新时间:2023-12-03 09:50:55 27 4
gpt4 key购买 nike

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

<plugin>
<groupId>com.oracle.substratevm</groupId>
<artifactId>native-image-maven-plugin</artifactId>
<version>19.2.1</version>
<configuration>
<mainClass>sample.NewMain</mainClass>
<imageName>sample</imageName>
<buildArgs>
-H:ReflectionConfigurationFiles=/home/user/Documents/Projects/TestProject/src/main/java/sample/reflect-config.json -H:+ReportExceptionStackTraces
</buildArgs>
</configuration>
<executions>
<execution>
<goals>
<goal>native-image</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
最初,我收到一个错误说明 Warning: Aborting stand-alone image build due to reflection use without configuration.我使用 Native Image 跟踪代理来生成配置文件进行反射,
我像这样传递给编译器插件: -H:ReflectionConfigurationFiles=/home/user/Documents/Projects/TestProject/src/main/java/sample/reflect-config.json -H:+ReportExceptionStackTraces我还打开了堆栈跟踪异常报告。
现在,当我尝试编译为 native 镜像时,出现以下错误与 native 库的使用有关:
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)
如何配置 native 库的使用? native 图像编译器工具中没有此选项,也没有任何提及我可以在任何地方找到的选项。
我已经设法用 Native Image 工具编译了其他项目,这意味着这个问题与 JavaFX 相关。

最佳答案

这不是那样工作的。您将不得不使用 Gluons 客户端-maven-插件 https://github.com/gluonhq/client-maven-plugin以此目的。它提供了一个特殊版本的已编译 Java 和 JavaFX 库来完成这项工作。严格按照说明操作。然后它会起作用。我经常使用它。

关于java - 如何使用 GraalVM 和 JavaFX 在 Maven 中编译 native 镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63419433/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com