Repository: quarkusio/quarkus
Issue: Quarkus hello.world image build fails when using openjdk-8u252-jvmci-20.0-b03

**Describe the bug**

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
```

**Expected behavior**

Doing the same as above but based on the previous https://github.com/graalvm/openjdk8-jvmci-builder/releases/tag/jvmci-20.0-b02 release results in a successful build. The same should work when using a GraalVM release based on jvmci-20.0-b03.

**Actual behavior**

Building the Quarkus hello.world image when using a GraalVM release based on jvmci-20.0-b03 fails with the error message shown above.

**To Reproduce**
Steps to reproduce the behavior:
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.

**Environment (please complete the following information):**
 - Output of `uname -a` or `ver`: Linux olpaw.lan 5.5.10-200.fc31.x86_64 #1 SMP Wed Mar 18 14:21:38 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
 - Output of `java -version`:
```
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b05)
OpenJDK 64-Bit Server VM (build 25.252-b05-jvmci-20.0-b03, mixed mode)
```
 - GraalVM version (if different from Java):  see Steps to reproduce pt 4.
 - Quarkus version or git rev: 1.2.0.Final
 - Build tool (ie. output of `mvnw --version` or `gradlew --version`): Apache Maven 3.5.4 (Red Hat 3.5.4-5)

Changed files:
extensions/netty/runtime/src/main/java/io/quarkus/netty/runtime/graal/NettySubstitutions.java

diff --git a/extensions/netty/runtime/src/main/java/io/quarkus/netty/runtime/graal/NettySubstitutions.java b/extensions/netty/runtime/src/main/java/io/quarkus/netty/runtime/graal/NettySubstitutions.java
index b3c4f28ad88..37ae94beb6f 100644
--- a/extensions/netty/runtime/src/main/java/io/quarkus/netty/runtime/graal/NettySubstitutions.java
+++ b/extensions/netty/runtime/src/main/java/io/quarkus/netty/runtime/graal/NettySubstitutions.java
@@ -122,18 +122,18 @@ public SSLEngine wrapSslEngine(SSLEngine engine, ByteBufAllocator alloc,
 
 @TargetClass(className = "io.netty.handler.ssl.JettyAlpnSslEngine", onlyWith = JDK8OrEarlier.class)
 final class Target_io_netty_handler_ssl_JettyAlpnSslEngine {
-    @Alias
+    @Substitute
     static boolean isAvailable() {
         return false;
     }
 
-    @Alias
+    @Substitute
     static Target_io_netty_handler_ssl_JettyAlpnSslEngine newClientEngine(SSLEngine engine,
             JdkApplicationProtocolNegotiator applicationNegotiator) {
         return null;
     }
 
-    @Alias
+    @Substitute
     static Target_io_netty_handler_ssl_JettyAlpnSslEngine newServerEngine(SSLEngine engine,
             JdkApplicationProtocolNegotiator applicationNegotiator) {
         return null;