quarkusio/quarkus · error · IllegalStateException

Unsupported archive type: ${archiveType}

Error message

Unsupported archive type: ${archiveType}

What it means

JvmStartupOptimizerArchiveBuildStep.build creates a JVM startup-optimization artifact (CDS/AppCDS archive or Spring-Boot-style training run / Serviceability Cache). The archive type comes from configuration; if it is neither the CDS path nor the supported training/scc path, the build fails with this IllegalStateException.

Source

Thrown at core/deployment/src/main/java/io/quarkus/deployment/pkg/steps/JvmStartupOptimizerArchiveBuildStep.java:193

        } else if (archiveType == JvmStartupOptimizerArchiveType.AOT
                || archiveType == JvmStartupOptimizerArchiveType.SCC) {
            List<String> additionalJvmArguments = new ArrayList<>();
            if (packageConfig.jar().aot().additionalRecordingArgs().isPresent()) {
                additionalJvmArguments.addAll(packageConfig.jar().aot().additionalRecordingArgs().get());
            }
            if (jvmStartupOptimizerArchiveContainerImage.isPresent()
                    && jvmStartupOptimizerArchiveContainerImage.get().getAdditionalJvmArgs().isPresent()) {
                additionalJvmArguments.addAll(jvmStartupOptimizerArchiveContainerImage.get().getAdditionalJvmArgs().get());
            }
            if (archiveType == JvmStartupOptimizerArchiveType.AOT) {
                archivePath = createAot(jarResult, outputTarget, javaBinPath, containerImage, isFastJar,
                        additionalJvmArguments);
            } else {
                archivePath = createScc(jarResult, outputTarget, javaBinPath, containerImage, isFastJar,
                        additionalJvmArguments);
            }
        } else {
            throw new IllegalStateException("Unsupported archive type: " + archiveType);
        }

        if (archivePath == null) {
            log.warnf("Unable to create %s.", archiveType);
            return;
        }

        log.infof("%s archive successfully created at: '%s'.", archiveType, archivePath.toAbsolutePath().toString());
        if (containerImage == null) {
            if (archiveType == JvmStartupOptimizerArchiveType.AppCDS) {
                log.infof(
                        "To ensure they are loaded properly, " +
                                "run the application jar from its directory and also add the '-XX:SharedArchiveFile=app-cds.jsa' "
                                +
                                "JVM flag.\nMoreover, make sure to use the exact same Java version (%s) to run the application as was used to build it.",
                        System.getProperty("java.version"));
            } else if (archiveType == JvmStartupOptimizerArchiveType.SCC) {
                log.infof(

View on GitHub (pinned to e1c734241f)

Solutions

  1. Check which archiveType value your configuration produces and correct typos.
  2. Read the Quarkus docs for supported values (e.g. fast-jar with create-appcds=true, or the unified quarkus.package.jar.* options of your Quarkus version).
  3. Remove deprecated/renamed packaging properties and reconfigure with current options.
  4. Upgrade/downgrade Quarkus so config and code expectations match.
  5. Inspect the build log just before the throw to see which branch was expected.

Example fix

# before
quarkus.package.type=my-custom-type
quarkus.package.create-appcds=true
# after
quarkus.package.jar.type=fast-jar
quarkus.package.jar.create-appcds=true
Defensive patterns

Strategy: validation

Validate before calling

// Validate packaging config before build
String type = System.getProperty("quarkus.package.jar.type", "fast-jar");
if (!java.util.Set.of("fast-jar", "legacy-jar", "mutable-jar", "uber-jar").contains(type)) {
    throw new IllegalStateException("Unsupported quarkus.package.jar.type: " + type);
}

Prevention

When it happens

Trigger: quarkus.class-loading or the startup-optimizer config selects an archiveType value not handled by the if/else chain in build() — e.g. a typo, an enum value added by a newer Quarkus used with an older processor, or an invalid quarkus.package.*-optimized setting.

Common situations: Setting quarkus.package.create-appcds=true together with an unsupported archive/optimized type combination; upgrading Quarkus and stale config referencing removed/renamed archive types; hand-edited application.properties values.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/74ac79ec9e2002a7. Report an issue: GitHub.