Class Loading Reference

The Quarkus class loading architecture is slightly different depending on the mode that the application is run in.

When running a production application using the fast-jar package type (which is the default), almost all dependencies are loaded via the io.quarkus.bootstrap.runner.RunnerClassLoader which indexes classes at build time, while a small set of dependencies is loaded from the system ClassLoader.

When running a production application using the legacy-jar package type everything is loaded in the system ClassLoader, so it is a completely flat classpath.

The flat classpath strategy is also used for GraalVM native images, since GraalVM does not really support multiple ClassLoaders.

For all other use cases (e.g. tests, dev mode, and building the application) Quarkus uses the class loading architecture outlined in following section.

See source for more: https://quarkus.io/guides/class-loading-reference