为我的 Spring boot 项目运行 native graal 构建(迁移到 Graal VM)时出现以下错误。我在任何地方都找不到这个问题的任何有效答案。请求社区提供帮助。
java.lang.NullPointerException: Cannot invoke "java.util.Set.iterator()" because "triggers" is null
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ReachabilityHandlerFeature.processReachable(ReachabilityHandlerFeature.java:173)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ReachabilityHandlerFeature.duringAnalysis(ReachabilityHandlerFeature.java:128)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$10(NativeImageGenerator.java:770)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:86)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$11(NativeImageGenerator.java:770)
at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.AbstractAnalysisEngine.runAnalysis(AbstractAnalysisEngine.java:179)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:767)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:582)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:539)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:408)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:612)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.start(NativeImageGeneratorRunner.java:134)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:94)
Spring Boot 版本:3.1.1 JDK:Graal 虚拟机、JDK 17 平台:MacOS(M2、Aarch64)
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
<extensions>true</extensions>
<executions>
<execution>
<id>build-native</id>
<goals>
<goal>compile-no-fork</goal>
</goals>
<phase>package</phase>
</execution>
<execution>
<id>test-native</id>
<goals>
<goal>test</goal>
</goals>
<phase>test</phase>
</execution>
</executions>
<configuration>
<fallback>false</fallback>
<buildArgs>
<arg>
--verbose
-Dspring.aot.enabled=true
-H:TraceClassInitialization=true
-H:+ReportExceptionStackTraces
-H:Name=trace-app
-H:DashboardDump=trace-app
-H:+DashboardAll
-H:Class=com.xxx.trace.TraceApplication
--initialize-at-build-time=org.slf4j.LoggerFactory,ch.qos.logback,org.slf4j.MDC,org.slf4j.impl.StaticLoggerBinder
--initialize-at-run-time=io.netty
-Dspring.graal.remove-unused-autoconfig=true
-Dspring.graal.remove-yaml-support=true
</arg>
</buildArgs>
<agent>
<enabled>true</enabled>
<defaultMode>Standard</defaultMode>
<options>
<trackReflectionMetadata>true</trackReflectionMetadata>
</options>
<metadataCopy>
<disabledStages>
<stage>test</stage>
</disabledStages>
<merge>true</merge>
<outputDirectory>/tmp/test-output-dir</outputDirectory>
</metadataCopy>
</agent>
</configuration>
</plugin>
最佳答案
这是 Graal 22.x native 镜像生成器中/的已知错误;请参阅https://github.com/oracle/graal/issues/5868 .
在撰写本文时,尚无可用的修复方法。但是,您也许可以根据问题的对应关系找出解决方法。
显然,该错误与 Graal 版本 22 中添加的新 RunReachabilityHandlersConcurrently
选项有关。一种可能的解决方法是使用旧版本的 Graal。另一个是找出正在使用新选项的内容并更改它......就像他们根据 https://github.com/googleapis/gax-java/pull/1815 对 googleapis/gax-java
所做的那样.
关于java - Graal VM 构建错误 : java. lang.NullPointerException:无法调用 "java.util.Set.iterator()",因为 "triggers"为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76752710/