quarkus: [AppCDS] -Dquarkus.package.create-appcds=true -Dquarkus.package.type=fast-jar seems broken with source/compiler 11

Describe the bug

I’ve been playing with application class data sharing according to this guide using getting-started. What surprised me that by default (fast-jar package type), the gain on using the AppCDS archive for running the app was nearly negligible:

Base line (only JDK CDS, No AppCDS):

$ /usr/lib/jvm/java-17-openjdk/bin/java -Xlog:cds -jar quarkus-run.jar 
[0.005s][info][cds] trying to map /usr/lib/jvm/java-17-openjdk-17.0.6.0.10-1.fc37.x86_64/lib/server/classes.jsa
[0.005s][info][cds] Opened archive /usr/lib/jvm/java-17-openjdk-17.0.6.0.10-1.fc37.x86_64/lib/server/classes.jsa.
[0.005s][info][cds] Archive was created with UseCompressedOops = 1, UseCompressedClassPointers = 1
[0.005s][info][cds] Core region alignment: 4096
[0.005s][info][cds] Reserved archive_space_rs [0x0000000800000000 - 0x0000000800c00000] (12582912) bytes
[0.005s][info][cds] Reserved class_space_rs   [0x0000000800c00000 - 0x0000000840c00000] (1073741824) bytes
[0.005s][info][cds] Mapped static  region #0 at base 0x0000000800000000 top 0x0000000800458000 (ReadWrite)
[0.005s][info][cds] Mapped static  region #1 at base 0x0000000800458000 top 0x0000000800be1000 (ReadOnly)
[0.005s][info][cds] CDS archive was created with max heap size = 16016M, and the following configuration:
[0.005s][info][cds]     narrow_klass_base = 0x0000000800000000, narrow_klass_shift = 0
[0.005s][info][cds]     narrow_oop_mode = 1, narrow_oop_base = 0x0000000000000000, narrow_oop_shift = 3
[0.005s][info][cds]     heap range = [0x00000003d7000000 - 0x00000007c0000000]
[0.005s][info][cds] The current max heap size = 16016M, HeapRegion::GrainBytes = 8388608
[0.005s][info][cds]     narrow_klass_base = 0x0000000800000000, narrow_klass_shift = 0
[0.005s][info][cds]     narrow_oop_mode = 1, narrow_oop_base = 0x0000000000000000, narrow_oop_shift = 3
[0.005s][info][cds]     heap range = [0x0000000417000000 - 0x0000000800000000]
[0.005s][info][cds] CDS heap data needs to be relocated to the end of the runtime heap to reduce fragmentation
[0.005s][info][cds] CDS heap data relocation delta = 1073741824 bytes
[0.005s][info][cds] Trying to map heap data: region[3] at 0x00000007ff800000, size =   536576 bytes
[0.005s][info][cds] Trying to map heap data: region[5] at 0x00000007ff000000, size =   483328 bytes
[0.005s][info][cds] optimized module handling: enabled
[0.005s][info][cds] full module graph: enabled
[0.005s][info][cds] use_full_module_graph = true; java.base = 0x00000008004516a0
[0.006s][info][cds] patching heap embedded pointers
[0.006s][info][cds] Mapped static  region #2 at base 0x00007f32bff6d000 top 0x00007f32bffa5000 (Bitmap)
[0.006s][info][cds] Unmapping region #2 at base 0x00007f32bff6d000 (Bitmap)
__  ____  __  _____   ___  __ ____  ______ 
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ 
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \   
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/   
2023-04-25 11:03:34,528 INFO  [io.quarkus] (main) getting-started 1.0.0-SNAPSHOT on JVM (powered by Quarkus 999-SNAPSHOT) started in 0.564s. Listening on: http://0.0.0.0:8080
2023-04-25 11:03:34,555 INFO  [io.quarkus] (main) Profile prod activated. 
2023-04-25 11:03:34,555 INFO  [io.quarkus] (main) Installed features: [cdi, resteasy-reactive, smallrye-context-propagation, vertx]

With AppCDS created using -Dquarkus.package.create-appcds=true -Dquarkus.package.type=fast-jar during the maven build:

$ /usr/lib/jvm/java-17-openjdk/bin/java -Xlog:cds -Xshare:on -XX:SharedArchiveFile=app-cds.jsa -jar quarkus-run.jar 
[0.005s][info][cds] trying to map app-cds.jsa
[0.005s][info][cds] Opened archive app-cds.jsa.
[0.005s][info][cds] Archive was created with UseCompressedOops = 1, UseCompressedClassPointers = 1
[0.005s][info][cds] Core region alignment: 4096
[0.005s][info][cds] Reserved archive_space_rs [0x0000000800000000 - 0x0000000801000000] (16777216) bytes
[0.005s][info][cds] Reserved class_space_rs   [0x0000000801000000 - 0x0000000841000000] (1073741824) bytes
[0.005s][info][cds] Mapped static  region #0 at base 0x0000000800000000 top 0x00000008005c8000 (ReadWrite)
[0.005s][info][cds] Mapped static  region #1 at base 0x00000008005c8000 top 0x0000000800f50000 (ReadOnly)
[0.005s][info][cds] CDS archive was created with max heap size = 16016M, and the following configuration:
[0.005s][info][cds]     narrow_klass_base = 0x0000000800000000, narrow_klass_shift = 0
[0.005s][info][cds]     narrow_oop_mode = 1, narrow_oop_base = 0x0000000000000000, narrow_oop_shift = 3
[0.005s][info][cds]     heap range = [0x00000003d7000000 - 0x00000007c0000000]
[0.005s][info][cds] The current max heap size = 16016M, HeapRegion::GrainBytes = 8388608
[0.005s][info][cds]     narrow_klass_base = 0x0000000800000000, narrow_klass_shift = 0
[0.005s][info][cds]     narrow_oop_mode = 1, narrow_oop_base = 0x0000000000000000, narrow_oop_shift = 3
[0.005s][info][cds]     heap range = [0x0000000417000000 - 0x0000000800000000]
[0.005s][info][cds] CDS heap data needs to be relocated to the end of the runtime heap to reduce fragmentation
[0.005s][info][cds] CDS heap data relocation delta = 1073741824 bytes
[0.005s][info][cds] Trying to map heap data: region[3] at 0x00000007ff800000, size =   659456 bytes
[0.005s][info][cds] Trying to map heap data: region[5] at 0x00000007ff000000, size =   593920 bytes
[0.005s][info][cds] optimized module handling: enabled
[0.005s][info][cds] full module graph: enabled
[0.005s][info][cds] use_full_module_graph = true; java.base = 0x00000008005c1ea0
[0.005s][info][cds] patching heap embedded pointers
[0.006s][info][cds] Mapped static  region #2 at base 0x00007efe816a1000 top 0x00007efe816e8000 (Bitmap)
[0.006s][info][cds] Unmapping region #2 at base 0x00007efe816a1000 (Bitmap)
__  ____  __  _____   ___  __ ____  ______ 
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ 
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \   
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/   
2023-04-25 11:06:08,414 INFO  [io.quarkus] (main) getting-started 1.0.0-SNAPSHOT on JVM (powered by Quarkus 999-SNAPSHOT) started in 0.514s. Listening on: http://0.0.0.0:8080
2023-04-25 11:06:08,435 INFO  [io.quarkus] (main) Profile prod activated. 
2023-04-25 11:06:08,435 INFO  [io.quarkus] (main) Installed features: [cdi, resteasy-reactive, smallrye-context-propagation, vertx]

So we have 0.564s for the baseline vs. 0.514s with AppCDS (difference almost considered noise). I’d have expected a larger reduction on boot time. And indeed, once we switch to -Dquarkus.package.type=uber-jar we get the expected boost: 0.343s (~200ms reduction as compared to baseline):

$ /usr/lib/jvm/java-17-openjdk/bin/java -Xlog:cds -Xshare:on -XX:SharedArchiveFile=app-cds.jsa -jar getting-started-1.0.0-SNAPSHOT-runner.jar 
[0.005s][info][cds] trying to map app-cds.jsa
[0.005s][info][cds] Opened archive app-cds.jsa.
[0.005s][info][cds] Archive was created with UseCompressedOops = 1, UseCompressedClassPointers = 1
[0.005s][info][cds] Core region alignment: 4096
[0.005s][info][cds] Reserved archive_space_rs [0x0000000800000000 - 0x0000000801800000] (25165824) bytes
[0.005s][info][cds] Reserved class_space_rs   [0x0000000801800000 - 0x0000000841800000] (1073741824) bytes
[0.005s][info][cds] Mapped static  region #0 at base 0x0000000800000000 top 0x0000000800939000 (ReadWrite)
[0.005s][info][cds] Mapped static  region #1 at base 0x0000000800939000 top 0x00000008017fc000 (ReadOnly)
[0.005s][info][cds] CDS archive was created with max heap size = 16016M, and the following configuration:
[0.005s][info][cds]     narrow_klass_base = 0x0000000800000000, narrow_klass_shift = 0
[0.005s][info][cds]     narrow_oop_mode = 1, narrow_oop_base = 0x0000000000000000, narrow_oop_shift = 3
[0.005s][info][cds]     heap range = [0x00000003d7000000 - 0x00000007c0000000]
[0.005s][info][cds] The current max heap size = 16016M, HeapRegion::GrainBytes = 8388608
[0.005s][info][cds]     narrow_klass_base = 0x0000000800000000, narrow_klass_shift = 0
[0.005s][info][cds]     narrow_oop_mode = 1, narrow_oop_base = 0x0000000000000000, narrow_oop_shift = 3
[0.005s][info][cds]     heap range = [0x0000000417000000 - 0x0000000800000000]
[0.005s][info][cds] CDS heap data needs to be relocated to the end of the runtime heap to reduce fragmentation
[0.005s][info][cds] CDS heap data relocation delta = 1073741824 bytes
[0.005s][info][cds] Trying to map heap data: region[3] at 0x00000007ff800000, size =  1036288 bytes
[0.005s][info][cds] Trying to map heap data: region[5] at 0x00000007ff000000, size =   856064 bytes
[0.005s][info][cds] optimized module handling: enabled
[0.005s][info][cds] full module graph: enabled
[0.005s][info][cds] use_full_module_graph = true; java.base = 0x0000000800932888
[0.005s][info][cds] patching heap embedded pointers
[0.005s][info][cds] Mapped static  region #2 at base 0x00007f8a208a6000 top 0x00007f8a20915000 (Bitmap)
[0.007s][info][cds] Unmapping region #2 at base 0x00007f8a208a6000 (Bitmap)
__  ____  __  _____   ___  __ ____  ______ 
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ 
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \   
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/   
2023-04-25 11:11:57,978 INFO  [io.quarkus] (main) getting-started 1.0.0-SNAPSHOT on JVM (powered by Quarkus 999-SNAPSHOT) started in 0.343s. Listening on: http://0.0.0.0:8080
2023-04-25 11:11:58,001 INFO  [io.quarkus] (main) Profile prod activated. 
2023-04-25 11:11:58,001 INFO  [io.quarkus] (main) Installed features: [cdi, resteasy-reactive, smallrye-context-propagation, vertx]

Expected behavior

-Dquarkus.package.type=fast-jar and -Dquarkus.package.create-appcds=true amounts to about the same amount of boot time reduction than -Dquarkus.package.type=uber-jar does (~200ms for the getting-started example in my case).

Actual behavior

Boot time reduction of the app is negligible as compared to JDK CDS (the default for JDK 17+ builds these days).

How to Reproduce?

Reproducer:

  1. Get the getting-started sample app. cd getting-started.
  2. JAVA_HOME=/usr/lib/jvm/java-17-openjdk ./mvnw -Dquarkus.platform.version=999-SNAPSHOT -Dquarkus.package.create-appcds=true -Dquarkus.package.type=fast-jar clean package
  3. cd target/quarkus-app
  4. /usr/lib/jvm/java-17-openjdk/bin/java -Xlog:cds -Xshare:on -XX:SharedArchiveFile=app-cds.jsa -jar quarkus-run.jar
  5. Observe the negligible bootup boost as compared to without the -Xshare:on -XX:SharedArchiveFile=app-cds.jsa options.

Output of uname -a or ver

No response

Output of java -version

Red_Hat-17.0.6.0.10-1.fc37

GraalVM version (if different from Java)

No response

Quarkus version or git rev

6c7268b90a6f0d76cea39c3ad4520526e66275d9

Build tool (ie. output of mvnw --version or gradlew --version)

maven

Additional information

When building with -X (debug logging) the AppCDSBuildStep shows many CNFE for vertex and others, which seems to indicate a classpath problem?

[DEBUG] [io.quarkus.deployment.pkg.steps.AppCDSBuildStep] Launching command: '/usr/lib/jvm/java-17-openjdk-17.0.6.0.10-1.fc37.x86_64/bin/java -XX:DumpLoadedClassList=classes.lst -Dquarkus.appcds.generate=true -jar /home/sgehwolf/Documents/openjdk/quarkus/quarkus-quickstarts/getting-started/target/quarkus-app/quarkus-run.jar' to create 'classes.lst' file.
__  ____  __  _____   ___  __ ____  ______ 
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ 
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \   
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/   
2023-04-25 10:54:27,198 WARN  [io.qua.config] (main) Unrecognized configuration key "quarkus.appcds.generate" was provided; it will be ignored; verify that the dependency extension for this configuration is set or that you did not make a typo
2023-04-25 10:54:32,509 INFO  [io.quarkus] (main) getting-started stopped in 0.001s
[DEBUG] [io.quarkus.deployment.pkg.steps.AppCDSBuildStep] 'classes.lst' successfully created.
[INFO] [io.quarkus.deployment.pkg.steps.AppCDSBuildStep] Launching AppCDS creation process.
[DEBUG] [io.quarkus.deployment.pkg.steps.AppCDSBuildStep] Launching command: '/usr/lib/jvm/java-17-openjdk-17.0.6.0.10-1.fc37.x86_64/bin/java -Xshare:dump -XX:SharedClassListFile=/home/sgehwolf/Documents/openjdk/quarkus/quarkus-quickstarts/getting-started/target/appcds/classes.lst -XX:SharedArchiveFile=app-cds.jsa --class-path quarkus-run.jar' to create final AppCDS.
[0.109s][warning][cds] resolve_indy for class io/smallrye/config/KeyMap has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/KeyMap
[0.140s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingProvider$Builder has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingProvider$Builder
[0.150s][warning][cds] Preload Warning: Cannot find jdk/proxy1/$Proxy0
[0.151s][warning][cds] Preload Warning: Cannot find jdk/proxy1/$Proxy4
[0.159s][warning][cds] resolve_indy for class io/smallrye/config/KeyMap has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/KeyMap
[0.159s][warning][cds] resolve_indy for class io/smallrye/config/KeyMap has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/KeyMap
[0.159s][warning][cds] resolve_indy for class io/smallrye/config/KeyMap has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/KeyMap
[0.162s][warning][cds] resolve_indy for class io/smallrye/common/classloader/ClassPathUtils has encountered exception: java.lang.NoClassDefFoundError io/smallrye/common/classloader/ClassPathUtils
[0.180s][warning][cds] resolve_indy for class io/smallrye/config/common/utils/ConfigSourceUtil has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/common/utils/ConfigSourceUtil
[0.180s][warning][cds] resolve_indy for class io/smallrye/common/classloader/ClassPathUtils has encountered exception: java.lang.NoClassDefFoundError io/smallrye/common/classloader/ClassPathUtils
[0.182s][warning][cds] resolve_indy for class io/smallrye/config/EnvConfigSource has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/EnvConfigSource
[0.183s][warning][cds] resolve_indy for class io/smallrye/config/SysPropConfigSource has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/SysPropConfigSource
[0.183s][warning][cds] resolve_indy for class io/smallrye/config/SysPropConfigSource has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/SysPropConfigSource
[0.184s][warning][cds] resolve_indy for class io/smallrye/config/ProfileConfigSourceInterceptor has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ProfileConfigSourceInterceptor
[0.184s][warning][cds] resolve_indy for class io/smallrye/config/SmallRyeConfig$ConfigSources has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/SmallRyeConfig$ConfigSources
[0.190s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingProvider has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingProvider
[0.190s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingLoader has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingLoader
[0.191s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingContext has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingContext
[0.191s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingContext has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingContext
[0.191s][warning][cds] resolve_indy for class io/smallrye/common/expression/Expression has encountered exception: java.lang.NoClassDefFoundError io/smallrye/common/expression/Expression
[0.191s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingContext has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingContext
[0.191s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingContext has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingContext
[0.191s][warning][cds] resolve_indy for class io/smallrye/config/SmallRyeConfig has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/SmallRyeConfig
[0.192s][warning][cds] resolve_indy for class io/quarkus/runtime/configuration/ConfigUtils has encountered exception: java.lang.NoClassDefFoundError io/quarkus/runtime/configuration/ConfigUtils
[0.192s][warning][cds] resolve_indy for class io/smallrye/config/SmallRyeConfig has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/SmallRyeConfig
[0.193s][warning][cds] resolve_indy for class io/quarkus/runtime/configuration/ConfigUtils has encountered exception: java.lang.NoClassDefFoundError io/quarkus/runtime/configuration/ConfigUtils
[0.194s][warning][cds] resolve_indy for class io/smallrye/config/SmallRyeConfigProviderResolver has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/SmallRyeConfigProviderResolver
[0.249s][warning][cds] resolve_indy for class io/quarkus/arc/impl/ArcContainerImpl has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/ArcContainerImpl
[0.249s][warning][cds] resolve_indy for class io/quarkus/arc/impl/ArcContainerImpl has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/ArcContainerImpl
[0.250s][warning][cds] resolve_indy for class io/quarkus/arc/impl/ArcContainerImpl has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/ArcContainerImpl
[0.250s][warning][cds] resolve_indy for class io/quarkus/arc/impl/ArcContainerImpl has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/ArcContainerImpl
[0.250s][warning][cds] resolve_indy for class org/slf4j/impl/Slf4jLoggerFactory has encountered exception: java.lang.NoClassDefFoundError org/slf4j/impl/Slf4jLoggerFactory
[0.250s][warning][cds] resolve_indy for class io/quarkus/arc/impl/Qualifiers has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/Qualifiers
[0.251s][warning][cds] resolve_indy for class io/quarkus/arc/impl/ArcContainerImpl has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/ArcContainerImpl
[0.251s][warning][cds] resolve_indy for class io/quarkus/arc/impl/EventImpl$Notifier has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/EventImpl$Notifier
[0.252s][warning][cds] resolve_indy for class io/quarkus/arc/impl/EventImpl$ObserverExceptionHandler has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/EventImpl$ObserverExceptionHandler
[0.252s][warning][cds] resolve_indy for class io/quarkus/arc/impl/BeanManagerImpl has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/BeanManagerImpl
[0.252s][warning][cds] resolve_indy for class io/quarkus/resteasy/reactive/server/runtime/ResteasyReactiveRecorder has encountered exception: java.lang.NoClassDefFoundError io/quarkus/resteasy/reactive/server/runtime/ResteasyReactiveRecorder
[0.253s][warning][cds] resolve_indy for class jakarta/ws/rs/ext/FactoryFinder has encountered exception: java.lang.NoClassDefFoundError jakarta/ws/rs/ext/FactoryFinder
[0.254s][warning][cds] resolve_indy for class org/jboss/resteasy/reactive/server/core/startup/RuntimeMappingDeployment has encountered exception: java.lang.NoClassDefFoundError org/jboss/resteasy/reactive/server/core/startup/RuntimeMappingDeployment
[0.254s][warning][cds] resolve_indy for class org/jboss/resteasy/reactive/server/core/startup/RuntimeMappingDeployment has encountered exception: java.lang.NoClassDefFoundError org/jboss/resteasy/reactive/server/core/startup/RuntimeMappingDeployment
[0.254s][warning][cds] resolve_indy for class org/jboss/resteasy/reactive/server/mapping/RequestMapper has encountered exception: java.lang.NoClassDefFoundError org/jboss/resteasy/reactive/server/mapping/RequestMapper
[0.254s][warning][cds] resolve_indy for class org/jboss/resteasy/reactive/server/mapping/RequestMapper has encountered exception: java.lang.NoClassDefFoundError org/jboss/resteasy/reactive/server/mapping/RequestMapper
[0.254s][warning][cds] resolve_indy for class org/jboss/resteasy/reactive/server/core/startup/RuntimeDeploymentManager has encountered exception: java.lang.NoClassDefFoundError org/jboss/resteasy/reactive/server/core/startup/RuntimeDeploymentManager
[0.255s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingContext has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingContext
[0.255s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingContext has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingContext
[0.263s][warning][cds] resolve_indy for class org/jboss/threads/Version has encountered exception: java.lang.NoClassDefFoundError org/jboss/threads/Version
[0.275s][warning][cds] resolve_indy for class io/smallrye/context/impl/DefaultValues has encountered exception: java.lang.NoClassDefFoundError io/smallrye/context/impl/DefaultValues
[0.277s][warning][cds] resolve_indy for class io/vertx/core/spi/ExecutorServiceFactory has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/spi/ExecutorServiceFactory
[0.277s][warning][cds] resolve_indy for class io/vertx/core/file/impl/FileCache has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/file/impl/FileCache
[0.278s][warning][cds] resolve_indy for class io/vertx/core/impl/btc/BlockedThreadChecker has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/btc/BlockedThreadChecker
[0.278s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.281s][warning][cds] resolve_indy for class io/vertx/core/eventbus/impl/DefaultSerializableChecker has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/eventbus/impl/DefaultSerializableChecker
[0.281s][warning][cds] resolve_indy for class io/vertx/core/eventbus/EventBus has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/eventbus/EventBus
[0.282s][warning][cds] resolve_indy for class io/vertx/core/eventbus/impl/CodecManager has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/eventbus/impl/CodecManager
[0.282s][warning][cds] resolve_indy for class io/vertx/core/eventbus/impl/CodecManager has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/eventbus/impl/CodecManager
[0.282s][warning][cds] resolve_indy for class io/vertx/core/impl/VerticleManager has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VerticleManager
[0.282s][warning][cds] resolve_indy for class io/vertx/ext/web/impl/RouterState has encountered exception: java.lang.NoClassDefFoundError io/vertx/ext/web/impl/RouterState
[0.282s][warning][cds] resolve_indy for class io/vertx/mutiny/ext/web/Router has encountered exception: java.lang.NoClassDefFoundError io/vertx/mutiny/ext/web/Router
[0.282s][warning][cds] resolve_indy for class io/vertx/mutiny/ext/web/Router has encountered exception: java.lang.NoClassDefFoundError io/vertx/mutiny/ext/web/Router
[0.283s][warning][cds] resolve_indy for class io/vertx/mutiny/ext/web/Router has encountered exception: java.lang.NoClassDefFoundError io/vertx/mutiny/ext/web/Router
[0.283s][warning][cds] resolve_indy for class io/vertx/mutiny/ext/web/Router has encountered exception: java.lang.NoClassDefFoundError io/vertx/mutiny/ext/web/Router
[0.299s][warning][cds] resolve_indy for class io/quarkus/runtime/logging/LoggingSetupRecorder$3 has encountered exception: java.lang.NoClassDefFoundError io/quarkus/runtime/logging/LoggingSetupRecorder$3
[0.299s][warning][cds] resolve_indy for class io/quarkus/runtime/logging/LoggingSetupRecorder$3 has encountered exception: java.lang.NoClassDefFoundError io/quarkus/runtime/logging/LoggingSetupRecorder$3
[0.317s][warning][cds] resolve_indy for class io/quarkus/runtime/init/InitializationTaskRecorder has encountered exception: java.lang.NoClassDefFoundError io/quarkus/runtime/init/InitializationTaskRecorder
[0.319s][warning][cds] resolve_indy for class io/vertx/core/impl/btc/BlockedThreadChecker$1 has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/btc/BlockedThreadChecker$1
[0.320s][warning][cds] resolve_indy for class io/quarkus/arc/impl/EventImpl$Notifier has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/EventImpl$Notifier
[0.321s][warning][cds] resolve_indy for class io/quarkus/arc/impl/ComputingCache has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/ComputingCache
[0.321s][warning][cds] resolve_indy for class io/quarkus/arc/impl/ComputingCache has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/ComputingCache
[0.321s][warning][cds] resolve_indy for class io/vertx/core/impl/CloseFuture has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/CloseFuture
[0.326s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.326s][warning][cds] resolve_indy for class io/vertx/core/impl/TaskQueue has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/TaskQueue
[0.326s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.326s][warning][cds] resolve_indy for class io/vertx/core/impl/EventLoopContext has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/EventLoopContext
[0.326s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.326s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.326s][warning][cds] resolve_indy for class io/vertx/core/impl/future/CompositeFutureImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/future/CompositeFutureImpl
[0.327s][warning][cds] resolve_indy for class io/vertx/core/eventbus/impl/EventBusImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/eventbus/impl/EventBusImpl
[0.327s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.327s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.327s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.327s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.327s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.327s][warning][cds] resolve_indy for class io/vertx/core/impl/ContextBase has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/ContextBase
[0.327s][warning][cds] resolve_indy for class io/vertx/core/impl/ContextBase has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/ContextBase
[0.328s][warning][cds] resolve_indy for class io/vertx/core/impl/future/FutureBase has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/future/FutureBase
[0.329s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.329s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl$1$1 has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl$1$1
[INFO] [io.quarkus.deployment.pkg.steps.AppCDSBuildStep] AppCDS successfully created at: '/home/sgehwolf/Documents/openjdk/quarkus/quarkus-quickstarts/getting-started/target/quarkus-app/app-cds.jsa'.
[INFO] [io.quarkus.deployment.pkg.steps.AppCDSBuildStep] To ensure they are loaded properly, run the application jar from its directory and also add the '-XX:SharedArchiveFile=app-cds.jsa' JVM flag.
Moreover, make sure to use the exact same Java version (17.0.6) to run the application as was used to build it.
[DEBUG] [io.quarkus.builder] Finished step "io.quarkus.deployment.pkg.steps.AppCDSBuildStep#build" in 6551 ms
[DEBUG] [io.quarkus.builder] End step completed; 0 remaining

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Comments: 18 (17 by maintainers)

Commits related to this issue

Most upvoted comments

I just tried a Quarkus sample that uses RESTEasy Reactive and Jackson (which is known to be heavy at startup) and got something like the following:

Bytecode target: 11 Runtime: Java 17 AppCDS: No Startup: ~690ms

Bytecode target: 11 Runtime: Java 17 AppCDS: Yes Startup: ~620ms

Bytecode target: 17 Runtime: Java 17 AppCDS: No Startup: ~690ms

Bytecode target: 17 Runtime: Java 17 AppCDS: Yes Startup: ~520ms

Bytecode target: 21 Runtime: Java 21 AppCDS: No Startup: ~690ms

Bytecode target: 21 Runtime: Java 21 AppCDS: Yes Startup: ~490ms

So there is very big jump when the target bytecode version is 17 vs 11 and then things get even better with Java 21! I am pleasantly surprised.

Note: My Java 17 environment was OpenJDK Runtime Environment Temurin-17.0.8.1+1 (build 17.0.8.1+1) and my Java 21 environment was OpenJDK Runtime Environment (build 21+35-2513) while the machine used to test this was a Lenovo P1 Gen3 running Ubuntu 22.04.