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

  1. Use a name from the error message's 'Available configurations are:' list (exact spelling/case)
  2. Run with -Dgraal.ShowConfiguration=info (or the factory's print mode) to enumerate valid candidates for your build
  3. 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

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


AI-assisted analysis of oracle/graal@a66e9ccd1d (2026-08-14). Data as JSON: /api/errors/fb86674c5983de51. Report an issue: GitHub.