oracle/graal · error · GraalError
Compiler configuration '%s' not found. Available configurati
Error message
Compiler configuration '%s' not found. Available configurations are: %s
What it means
CompilerConfigurationFactory.selectFactory looks up the requested compiler configuration by exact name among all candidates discovered via getAllCandidates(); if no candidate's name equals the value, it throws GraalError listing the available configuration names. This guards typos in the jvmci compiler configuration selection.
Source
Thrown at compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/CompilerConfigurationFactory.java:239
CompilerConfigurationFactory factory = null;
try (InitTimer t = timer("CompilerConfigurationFactory.selectFactory")) {
String value = name == null ? Options.CompilerConfiguration.getValue(options) : name;
if ("help".equals(value)) {
System.out.println("The available compiler configurations are:");
for (CompilerConfigurationFactory candidate : getAllCandidates()) {
System.out.println(" " + candidate.name + " priority " + candidate.autoSelectionPriority);
}
HotSpotGraalServices.exit(0, runtime);
} else if (value != null) {
for (CompilerConfigurationFactory candidate : getAllCandidates()) {
if (candidate.name.equals(value)) {
// Selects highest priority candidate with specified name
factory = candidate;
break;
}
}
if (factory == null) {
throw new GraalError("Compiler configuration '%s' not found. Available configurations are: %s", value,
getAllCandidates().stream().map(c -> c.name).distinct().collect(Collectors.joining(", ")));
}
} else {
List<CompilerConfigurationFactory> candidates = getAllCandidates();
if (candidates.isEmpty()) {
throw new GraalError("No %s providers found", CompilerConfigurationFactory.class.getName());
}
factory = candidates.getFirst();
}
}
assert factory != null;
ShowConfigurationLevel level = Options.ShowConfiguration.getValue(options);
if (level != ShowConfigurationLevel.none && shownConfiguration.compareAndSet(0L, 1L)) {
switch (level) {
case info: {
printConfigInfo(factory);
break;View on GitHub (pinned to a66e9ccd1d)
Solutions
- Use a name from the error message's 'Available configurations are:' list (exact spelling/case)
- Run with -Dgraal.ShowConfiguration=info (or the factory's print mode) to enumerate valid candidates for your build
- If you expected the name to exist, check your GraalVM edition/version — some configurations are enterprise-only or were renamed
Example fix
# before -Dgraal.CompilerConfiguration=ejct # GraalError: not found # after -Dgraal.CompilerConfiguration=eclipse # name taken from the 'available' list
Defensive patterns
Strategy: validation
Validate before calling
Set<String> valid = CompilerConfigurationFactory.getAllCandidates().stream().map(c -> c.name).collect(Collectors.toSet());
if (!valid.contains(requested)) { /* reject before setting -Dgraal.CompilerConfiguration */ } Prevention
- Copy configuration names from -Dgraal.ShowConfiguration output, not memory
- Treat a configuration list from a different edition/version as advisory only
- Fail fast in launch scripts on unknown configuration names
When it happens
Trigger: Setting the compiler configuration to an unknown name (e.g. -Dgraal.CompilerConfiguration=ejct or 'community') while no candidate factory with that exact name is on the classpath; case must match exactly.
Common situations: Typos or wrong case in -Dgraal.CompilerConfiguration; using a configuration name that only exists in a different GraalVM edition (enterprise-only names on Community builds); stale documentation naming a configuration that was renamed/removed in a newer release.
Related errors
- No options specified for MethodFilter:
- %s garbage collector is not supported by Graal
- Multiple garbage collectors selected: %s %s
- Option name must follow '<prefix>' prefix
- too many decompiles: {} {}
AI-assisted analysis of oracle/graal@a66e9ccd1d (2026-08-14).
Data as JSON: /api/errors/fb86674c5983de51.
Report an issue: GitHub.