在本地编译期间,如何在 Quarkus maven 插件中向 GraalVM 添加参数?

bme*_*ier 5 quarkus

当我为我的应用程序构建本机映像时,我遇到了一些我不明白的错误。

    Error: unsupported features in 3 methods
    Detailed message:
    Error: com.oracle.svm.hosted.substitute.DeletedElementException:     Unsupported method java.lang.Class.getConstantPool() is reachable: The declaring class of this element has been substituted, but this element is not present in the substitution class
Run Code Online (Sandbox Code Playgroud)

Graal 建议我设置这个选项 --report-unsupported-elements-at-runtime

我阅读了NativeImageMojo的代码

我想把这样的东西:

  <plugin>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-maven-plugin</artifactId>
      <version>${quarkus.version}</version>
      <executions>
      <execution>
          <goals>
             <goal>native-image</goal>
          </goals>
      <configuration>
           <enableHttpUrlHandler>true</enableHttpUrlHandler>
           <containerRuntimeOptions>--report-unsupported-elements-at-runtime</containerRuntimeOptions>
      </configuration>
      </execution>
      </executions>
  </plugin>
Run Code Online (Sandbox Code Playgroud)

但是没有出现选项:

[INFO] [io.quarkus.creator.phase.nativeimage.NativeImagePhase] /sandbox/Resources/GraalVm/graalvm-ce-1.0.0-rc15/bin/native-image -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true -H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy$BySpaceAndTime -jar portfolio-app-1.0-SNAPSHOT-runner.jar -J-Djava.util.concurrent.ForkJoinPool.common.parallelism=1 -H:FallbackThreshold=0 -H:+PrintAnalysisCallTree -H:-AddAllCharsets -H:EnableURLProtocols=http,https --enable-all-security-services -H:NativeLinkerOption=-no-pie -H:-SpawnIsolates -H:+JNI --no-server -H:-UseServiceLoaderFeature -H:+StackTrace
Run Code Online (Sandbox Code Playgroud)

如何添加 --report-unsupported-elements-at-runtime ?(我使用 Quarkus-bom 0.14.0 和 graalvm-ce-1.0.0-rc15)

Gui*_*met 4

在这种情况下,最好的方法是使用:

<reportErrorsAtRuntime>true</reportErrorsAtRuntime>
Run Code Online (Sandbox Code Playgroud)

在您的本机映像目标的配置中。