quarkusio/quarkus · error · java.lang.IllegalArgumentException
Unsupported @CheckedTemplate#defaultName() value: <defaultNa
Error message
Unsupported @CheckedTemplate#defaultName() value: <defaultNameStrategy>
What it means
@CheckedTemplate#defaultName() selects how method/fragment names are converted to template path segments (e.g. LOWERCASE, CAMEL_HUMPS, LOWER_UNCERTAIN style constants from CheckedTemplate.DefaultName). defaultedName throws IllegalArgumentException for any constant value the processor does not recognize — typically when compiling against a mismatched Qute version or passing a non-enum value.
Source
Thrown at extensions/qute/deployment/src/main/java/io/quarkus/qute/deployment/QuteProcessor.java:620
return targetClass.nestingType() == NestingType.TOP_LEVEL ? targetClass.name().withoutPackagePrefix()
: targetClass.simpleName();
}
private String defaultedName(String defaultNameStrategy, String value) {
switch (defaultNameStrategy) {
case CheckedTemplate.ELEMENT_NAME:
return value;
case CheckedTemplate.HYPHENATED_ELEMENT_NAME:
return StringUtil.hyphenate(value);
case CheckedTemplate.UNDERSCORED_ELEMENT_NAME:
return String.join("_", new Iterable<String>() {
@Override
public Iterator<String> iterator() {
return StringUtil.lowerCase(StringUtil.camelHumpsIterator(value));
}
});
default:
throw new IllegalArgumentException("Unsupported @CheckedTemplate#defaultName() value: " + defaultNameStrategy);
}
}
private boolean isNotLocatedByCustomTemplateLocator(
Collection<Pattern> locationPatterns, String templatePath) {
if (!locationPatterns.isEmpty() && templatePath != null) {
for (Pattern locationPattern : locationPatterns) {
if (locationPattern.matcher(templatePath).matches()) {
return false;
}
}
}
return true;
}
@BuildStep
EffectiveTemplatePathsBuildItem collectEffectiveTemplatePaths(QuteConfig config,
List<TemplatePathBuildItem> templatePaths) {View on GitHub (pinned to e1c734241f)
Solutions
- Use only documented constants from CheckedTemplate.DefaultName (e.g. CheckedTemplate.DefaultName.ELEMENT_NAME, .LOWER_HYPHENATED, .LOWER_SNAKE, .UPPER_SNAKE)
- Align Quarkus BOM/platform versions so the qute annotation and deployment processor come from the same release
- Clean and rebuild — stale classes from an older Quarkus version can carry removed constants
Example fix
// before @CheckedTemplate(defaultName = CheckedTemplate.DefaultName.KEBAB) // non-existent/unsupported // after @CheckedTemplate(defaultName = CheckedTemplate.DefaultName.LOWER_HYPHENATED)
Defensive patterns
Strategy: validation
Validate before calling
// validate defaultName before use
CheckedTemplate.DefaultName dn = templateAnnotation.defaultName();
if (dn != CheckedTemplate.DefaultName.ELEMENT_NAME
&& dn != CheckedTemplate.DefaultName.LOWER_HYPHENATED
&& dn != CheckedTemplate.DefaultName.LOWER_SNAKE
&& dn != CheckedTemplate.DefaultName.UPPER_SNAKE) {
throw new IllegalArgumentException("Unsupported defaultName: " + dn);
} Prevention
- Use only constants from your Quarkus version's CheckedTemplate.DefaultName
- Keep Quarkus platform BOM aligned across all modules (no mixed versions)
- Check the Quarkus migration guide after upgrades for renamed constants
When it happens
Trigger: defaultedName is called from getCheckedTemplateName/getCheckedFragmentId while processing @CheckedTemplate; the annotation's defaultName member holds a value outside the supported set handled by the switch statement.
Common situations: Quarkus/Qute version skew: annotation compiled against a newer io.quarkus.qute.CheckedTemplate with constants the deployment processor doesn't know; manually passing an invalid constant in a code generator; typos when constructing AnnotationValue in tests.
Related errors
- Multiple checked templates exist for the template path %s:
- Message bundle name [%s] declared on %s must be a valid name
- Message bundle interface name conflict - [%s] is used for bo
- @MessageBundle must be declared on an interface: {bundleClas
- <startsWith> match the path <templatePath> but the file suff
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/a250fe9591291c44.
Report an issue: GitHub.