quarkusio/quarkus · error · CodestartStructureException
ConflictStrategyHandler named '" + entry.getValue() + "' not
Error message
ConflictStrategyHandler named '" + entry.getValue() + "' not found. Used with filter '" + entry.getKey() + "'
What it means
CodestartProcessor.buildStrategies maps codestart conflict-strategy spec entries to named CodestartFileStrategyHandler instances via a BY_NAME registry. This error means a strategy name in the codestart spec (codestarts.yml / project generation config) does not match any registered handler. It is a configuration error in the codestart definition, not user code.
Source
Thrown at independent-projects/tools/codestarts/src/main/java/io/quarkus/devtools/codestarts/core/CodestartProcessor.java:94
}
}
public void writeFiles() throws IOException {
for (Map.Entry<String, List<TargetFile>> e : files.entrySet()) {
final String relativePath = e.getKey();
final CodestartFileStrategyHandler strategy = getStrategy(relativePath).orElse(getSelectedDefaultStrategy());
log.debug("processing file '%s' with strategy %s", relativePath, strategy.name());
strategy.process(targetDirectory, relativePath, e.getValue(), data);
}
}
public static List<CodestartFileStrategy> buildStrategies(Map<String, String> spec) {
final List<CodestartFileStrategy> codestartFileStrategyHandlers = new ArrayList<>(spec.size());
for (Map.Entry<String, String> entry : spec.entrySet()) {
final CodestartFileStrategyHandler handler = CodestartFileStrategyHandler.BY_NAME.get(entry.getValue());
if (handler == null) {
throw new CodestartStructureException("ConflictStrategyHandler named '" + entry.getValue()
+ "' not found. Used with filter '" + entry.getKey() + "'");
}
codestartFileStrategyHandlers.add(new CodestartFileStrategy(entry.getKey(), handler));
}
return codestartFileStrategyHandlers;
}
void addBuiltinData() {
// needed for azure functions codestart
data.put("gen-info", Collections.singletonMap("time", System.currentTimeMillis()));
}
void processLanguageDir(final CodestartResource projectResource, final CodestartResource resource, final String languageDir,
final Map<String, Object> finalData) {
log.debug("processing dir: %s", resource.pathName());
final List<Source> sources = resource.listSources(languageDir);
for (Source source : sources) {View on GitHub (pinned to e1c734241f)
Solutions
- Fix the strategy name in the codestart spec to one of the registered handler names (e.g. default, override, merge, fail) — check CodestartFileStrategyHandler for valid values
- Update the custom codestart definition to match the current Quarkus codestart spec
- If a custom handler was intended, register/define it in the handlers enum before use
Example fix
# before
codestart:
conflict-strategy:
'*': overwrit
# after
codestart:
conflict-strategy:
'*': override Defensive patterns
Strategy: validation
Validate before calling
spec.values().forEach(v -> {
if (!CodestartFileStrategyHandler.BY_NAME.containsKey(v))
throw new IllegalArgumentException("Unknown strategy handler: " + v);
}); Try / catch
try {
CodestartProcessor.buildStrategies(spec);
} catch (CodestartStructureException e) {
// surface the offending filter/strategy name from e.getMessage()
} Prevention
- Use only registered handler names in specs
- Validate codestart YAML in CI
- Sync handler renames with all codestart definitions
When it happens
Trigger: A codestart YAML declares a 'conflict-strategy' (or file strategy) map whose value names a handler that is not in CodestartFileStrategyHandler.BY_NAME, and a project generation loads that codestart.
Common situations: Typos in strategy names in codestarts.yml; renaming/removing a handler enum constant while old codestarts still reference it; custom codestarts copied from an incompatible Quarkus version.
Related errors
- can't be used as '*' file strategy
- Failed to load codestart spec: + resourceName
- Multiple fallback found for a base codestart of type: '" + a
- Invalid CodestartDep expression: + expression
- Expected a value of type ${type.getName()} for option ${name
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/b0ea7c8c68e212bc.
Report an issue: GitHub.