{"record":{"id":"baa6c2323e5a044f","repo":"oracle/graal","slug":"no-s-providers-found","errorCode":null,"errorMessage":"No %s providers found","messagePattern":"No (.+?) providers found","errorType":"exception","errorClass":"GraalError","httpStatus":null,"severity":"critical","filePath":"compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/CompilerConfigurationFactory.java","lineNumber":245,"sourceCode":"                    System.out.println(\"    \" + candidate.name + \" priority \" + candidate.autoSelectionPriority);\n                }\n                HotSpotGraalServices.exit(0, runtime);\n            } else if (value != null) {\n                for (CompilerConfigurationFactory candidate : getAllCandidates()) {\n                    if (candidate.name.equals(value)) {\n                        // Selects highest priority candidate with specified name\n                        factory = candidate;\n                        break;\n                    }\n                }\n                if (factory == null) {\n                    throw new GraalError(\"Compiler configuration '%s' not found. Available configurations are: %s\", value,\n                                    getAllCandidates().stream().map(c -> c.name).distinct().collect(Collectors.joining(\", \")));\n                }\n            } else {\n                List<CompilerConfigurationFactory> candidates = getAllCandidates();\n                if (candidates.isEmpty()) {\n                    throw new GraalError(\"No %s providers found\", CompilerConfigurationFactory.class.getName());\n                }\n                factory = candidates.getFirst();\n            }\n        }\n        assert factory != null;\n\n        ShowConfigurationLevel level = Options.ShowConfiguration.getValue(options);\n        if (level != ShowConfigurationLevel.none && shownConfiguration.compareAndSet(0L, 1L)) {\n            switch (level) {\n                case info: {\n                    printConfigInfo(factory);\n                    break;\n                }\n                case verbose: {\n                    printConfigVerbose(factory);\n                    CompilerConfiguration config = factory.createCompilerConfiguration();\n                    printPlan(\"High tier:\", () -> config.createHighTier(options));\n                    printPlan(\"Mid tier:\", () -> config.createMidTier(options));","sourceCodeStart":227,"sourceCodeEnd":263,"githubUrl":"https://github.com/oracle/graal/blob/a66e9ccd1d7bf2552883939aa0788dfd0e294aab/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/CompilerConfigurationFactory.java#L227-L263","documentation":"When no explicit configuration name is given, selectFactory auto-selects the highest-priority candidate from all CompilerConfigurationFactory providers discoverable on the classpath. If that list is empty it throws GraalError('No jdk.graal.compiler.hotspot.CompilerConfigurationFactory providers found'), meaning the Graal compiler jar's service-provider metadata is missing or the jar is broken.","triggerScenarios":"Initializing HotSpotGraalRuntime with no -Dgraal.CompilerConfiguration set while ServiceLoader finds zero CompilerConfigurationFactory entries — typically a corrupted/incomplete compiler jar, a fat-jar/shading build that dropped META-INF/services entries, or a custom classloader that does not expose service metadata.","commonSituations":"Repackaging jdk.graal.compiler into an uber-jar without merging META-INF/services; running on a broken GraalVM install; test classpaths that include the compiler classes but not its service descriptors; exotic classloaders (OSGi-like) hiding provider files.","solutions":["Restore/repair the GraalVM installation or compiler jar so META-INF/services/jdk.graal.compiler.hotspot.CompilerConfigurationFactory is present","If shading, use a merge-aware plugin (maven-shade ServicesResourceTransformer) to concatenate service files","Work around by naming an explicit -Dgraal.CompilerConfiguration=<name> only if the classes really exist; otherwise fix packaging first"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"boolean providersVisible() {\n    return ServiceLoader.load(CompilerConfigurationFactory.class).iterator().hasNext();\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use merge-aware shading (ServicesResourceTransformer) for service files","Smoke-test a Graal-enabled startup in CI to catch missing providers early","Avoid hand-repackaging compiler jars; depend on the Maven artifact as-is"],"tags":["graal-compiler","classpath","packaging","service-loader","startup"],"backgroundTag":null,"analyzedSha":"a66e9ccd1d7bf2552883939aa0788dfd0e294aab","analyzedAt":"2026-08-14T13:58:47.161Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}