Graal: Quarkus hello.world image build fails when using openjdk-8u252-jvmci-20.0-b03

Created on 25 Mar 2020  路  5Comments  路  Source: oracle/graal

Building a Quarkus hello.world image fails when using a GraalVM built from https://github.com/graalvm/graal-jvmci-8/releases/download/jvmci-20.0-b03/openjdk-8u252-jvmci-20.0-b03-linux-amd64.tar.gz

[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ hello.world ---
[INFO] Building jar: /home/pwoegere/OLabs/issues/GR-21959/hello.world/target/hello.world-1.0-SNAPSHOT.jar
[INFO] 
[INFO] --- quarkus-maven-plugin:1.2.0.Final:build (default) @ hello.world ---
[INFO] [org.jboss.threads] JBoss Threads version 3.0.0.Final
[INFO] [io.quarkus.deployment.pkg.steps.JarResultBuildStep] Building thin jar: /home/pwoegere/OLabs/issues/GR-21959/hello.world/target/hello.world-1.0-SNAPSHOT-runner.jar
[INFO] [io.quarkus.deployment.QuarkusAugmentor] Quarkus augmentation completed in 1055ms
[INFO] 
[INFO] --- quarkus-maven-plugin:1.2.0.Final:native-image (default) @ hello.world ---
[INFO] [io.quarkus.deployment.pkg.steps.JarResultBuildStep] Building native image source jar: /home/pwoegere/OLabs/issues/GR-21959/hello.world/target/hello.world-1.0-SNAPSHOT-native-image-source-jar/hello.world-1.0-SNAPSHOT-runner.jar
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep] Building native image from /home/pwoegere/OLabs/issues/GR-21959/hello.world/target/hello.world-1.0-SNAPSHOT-native-image-source-jar/hello.world-1.0-SNAPSHOT-runner.jar
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep] Running Quarkus native-image plugin on GraalVM Version 20.1.0-dev LIBGRAAL (Java Version 1.8.0_252)
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep] /home/pwoegere/OLabs/issues/GR-21959/graal/vm/latest_graalvm_home/bin/native-image -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dsun.nio.ch.maxUpdateArraySize=100 -J-Dio.netty.leakDetection.level=DISABLED -J-Dio.netty.allocator.maxOrder=1 -J-Dvertx.logger-delegate-factory-class-name=io.quarkus.vertx.core.runtime.VertxLogDelegateFactory -J-Dvertx.disableDnsResolver=true --initialize-at-build-time= -H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy$BySpaceAndTime -jar hello.world-1.0-SNAPSHOT-runner.jar -H:FallbackThreshold=0 -H:+ReportExceptionStackTraces -H:-AddAllCharsets -H:EnableURLProtocols=http -H:NativeLinkerOption=-no-pie -H:+JNI --no-server -H:-UseServiceLoaderFeature -H:+StackTrace hello.world-1.0-SNAPSHOT-runner
[hello.world-1.0-SNAPSHOT-runner:47922]    classlist:   4,574.43 ms,  1.36 GB
[hello.world-1.0-SNAPSHOT-runner:47922]        (cap):     653.05 ms,  1.36 GB
[hello.world-1.0-SNAPSHOT-runner:47922]        setup:   2,072.65 ms,  1.36 GB
15:10:54,309 INFO  [org.jbo.threads] JBoss Threads version 3.0.0.Final
[hello.world-1.0-SNAPSHOT-runner:47922]     (clinit):     582.35 ms,  1.95 GB
[hello.world-1.0-SNAPSHOT-runner:47922]   (typeflow):  11,011.49 ms,  1.95 GB
[hello.world-1.0-SNAPSHOT-runner:47922]    (objects):   8,593.85 ms,  1.95 GB
[hello.world-1.0-SNAPSHOT-runner:47922]   (features):     388.07 ms,  1.95 GB
[hello.world-1.0-SNAPSHOT-runner:47922]     analysis:  21,522.86 ms,  1.95 GB
Error: Unsupported features in 4 methods
Detailed message:
Error: Class initialization of io.netty.handler.ssl.JettyAlpnSslEngine$ClientEngine failed. Use the option --initialize-at-run-time=io.netty.handler.ssl.JettyAlpnSslEngine$ClientEngine to explicitly request delayed initialization of this class.
Original exception that caused the problem: java.lang.NoClassDefFoundError: org/eclipse/jetty/alpn/ALPN$Provider
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at com.oracle.svm.hosted.classinitialization.ConfigurableClassInitialization.ensureClassInitialized(ConfigurableClassInitialization.java:167)
    at com.oracle.svm.hosted.classinitialization.ConfigurableClassInitialization.computeInitKindAndMaybeInitializeClass(ConfigurableClassInitialization.java:560)
    at com.oracle.svm.hosted.classinitialization.ConfigurableClassInitialization.computeInitKindAndMaybeInitializeClass(ConfigurableClassInitialization.java:130)
    at com.oracle.svm.hosted.classinitialization.ConfigurableClassInitialization.maybeInitializeHosted(ConfigurableClassInitialization.java:158)
    at com.oracle.svm.hosted.SVMHost.registerType(SVMHost.java:200)
    at com.oracle.graal.pointsto.meta.AnalysisUniverse.createType(AnalysisUniverse.java:264)
    at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookupAllowUnresolved(AnalysisUniverse.java:205)
    at com.oracle.graal.pointsto.infrastructure.WrappedConstantPool.lookupType(WrappedConstantPool.java:155)
    at org.graalvm.compiler.java.BytecodeParser.lookupType(BytecodeParser.java:4248)
    at org.graalvm.compiler.java.BytecodeParser.genNewInstance(BytecodeParser.java:4505)
    at org.graalvm.compiler.java.BytecodeParser.processBytecode(BytecodeParser.java:5303)
    at org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3397)
    at org.graalvm.compiler.java.BytecodeParser.processBlock(BytecodeParser.java:3204)
    at org.graalvm.compiler.java.BytecodeParser.build(BytecodeParser.java:1085)
    at org.graalvm.compiler.java.BytecodeParser.buildRootMethod(BytecodeParser.java:979)
    at org.graalvm.compiler.java.GraphBuilderPhase$Instance.run(GraphBuilderPhase.java:84)
    at org.graalvm.compiler.phases.Phase.run(Phase.java:49)
    at org.graalvm.compiler.phases.BasePhase.apply(BasePhase.java:209)
    at org.graalvm.compiler.phases.Phase.apply(Phase.java:42)
    at org.graalvm.compiler.phases.Phase.apply(Phase.java:38)
    at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:221)
    at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:340)
    at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:310)
    at com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureParsed(MethodTypeFlow.java:300)
    at com.oracle.graal.pointsto.flow.MethodTypeFlow.addContext(MethodTypeFlow.java:107)
    at com.oracle.graal.pointsto.flow.StaticInvokeTypeFlow.update(InvokeTypeFlow.java:346)
    at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:523)
    at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:175)
    at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.alpn.ALPN$Provider
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
    ... 34 more

Steps to reproduce the issue

  1. Get and extract https://github.com/graalvm/graal-jvmci-8/releases/download/jvmci-20.0-b03/openjdk-8u252-jvmci-20.0-b03-linux-amd64.tar.gz
  2. Set JAVA_HOME to the openjdk-8u252-jvmci-20.0-b03 release
  3. Clone https://github.com/oracle/graal/
  4. Change to graal/vm & build a GraalVM with mx --dy /substratevm --disable-installables=true --force-bash-launchers=gu,native-image-configure,polyglot --skip-libraries=native-image-agent,polyglot
  5. Clone https://github.com/olpaw/quarkus-hello-world and change to quarkus-hello-world
  6. Build with GRAALVM_HOME=<path-to>/graal/vm/latest_graalvm_home mvn package -Pnative to see the error message decribed above.

Describe GraalVM and your environment:

  • GraalVM version: Built as described above.
  • JDK major version: 8
  • OS: Fedora 31
  • Architecture: AMD64
bug native-image

All 5 comments

Note that doing all exactly as above except for using https://github.com/graalvm/openjdk8-jvmci-builder/releases/tag/jvmci-20.0-b02 instead of jvmci-20.0-b03 will result in a successful build.

@dmlloyd can you please triage this to the right person on the Quarkus team.

We don't triage to people per se; can you please open an upstream bug at https://github.com/quarkusio/quarkus?

This has been fixed in Quarkus 1.3.1.Final which was released a few days back.

Was this page helpful?
0 / 5 - 0 ratings