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
- Check which archiveType value your configuration produces and correct typos.
- 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).
- Remove deprecated/renamed packaging properties and reconfigure with current options.
- Upgrade/downgrade Quarkus so config and code expectations match.
- 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
- Only use documented values for quarkus.package.jar.type / create-appcds.
- After Quarkus upgrades, review packaging config for renamed options.
- Use quarkus config validation (build-time config errors surface at startup).
- Never hand-invent archive type values in application.properties.
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
- The configuration ${clazz} must be an interface annotated wi
- remote-dev can only be used with mutable applications i.e. u
- Unknown JAR package type '${value}'
- Additional application archives can only be provided from th
- Multiple GeneratedClassBuildItem were produced for the same
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/74ac79ec9e2002a7.
Report an issue: GitHub.