{"record":{"id":"3c8e0f33ad2da76a","repo":"quarkusio/quarkus","slug":"can-not-load-class","errorCode":null,"errorMessage":"Can not load class []","messagePattern":"Can not load class \\[\\]","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"extensions/smallrye-graphql/runtime/src/main/java/io/quarkus/smallrye/graphql/runtime/spi/QuarkusClassloadingService.java","lineNumber":41,"sourceCode":"     */\n    private static volatile ClassLoader classLoader;\n\n    @Override\n    public String getName() {\n        return \"Quarkus\";\n    }\n\n    @Override\n    public Class<?> loadClass(String className) {\n        try {\n            if (Classes.isPrimitive(className)) {\n                return Classes.getPrimativeClassType(className);\n            } else {\n                ClassLoader cl = classLoader == null ? Thread.currentThread().getContextClassLoader() : classLoader;\n                return loadClass(className, cl);\n            }\n        } catch (ClassNotFoundException pae) {\n            throw new RuntimeException(\"Can not load class [\" + className + \"]\", pae);\n        }\n    }\n\n    public static void setClassLoader(ClassLoader classLoader) {\n        QuarkusClassloadingService.classLoader = classLoader;\n        PropertyDataFetcherHelper.clearReflectionCache();\n    }\n}\n","sourceCodeStart":23,"sourceCodeEnd":50,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/smallrye-graphql/runtime/src/main/java/io/quarkus/smallrye/graphql/runtime/spi/QuarkusClassloadingService.java#L23-L50","documentation":"QuarkusClassloadingService.loadClass resolves class names by string (used by SmallRye GraphQL for data fetchers/token providers) via the configured or TCCL classloader and wraps any ClassNotFoundException into RuntimeException 'Can not load class [<className>]'. The empty brackets in the logged message indicate the className string failed to resolve at runtime.","triggerScenarios":"A configured or reflectively referenced class name (e.g. a token provider class in quarkus.smallrye-graphql.* config or property-based wiring) is not on the runtime application classpath — misspelled FQCN, class in a provided/optional dependency not packaged, or native-mode class not registered.","commonSituations":"Typos in class names in application.properties; depending on a class from a library marked <scope>provided</scope>; GraalVM native image where the class was eliminated without @RegisterForReflection; hot-reload windows where the classloader was swapped.","solutions":["Verify the exact fully-qualified class name in configuration/code and that its artifact is a normal runtime dependency (not provided/optional)","Ensure the class is reachable in native mode: annotate with @RegisterForReflection or add to reflection config if running -Dnative","Call QuarkusClassloadingService.setClassLoader with the correct classloader if running outside the standard Quarkus TCCL context","Check the runtime classpath (mvn dependency:tree / native image config) for the jar containing the class"],"exampleFix":"// before\nquarkus.smallrye-graphql.authorization-token-propagation.enabled=true\n# class name typo / missing dependency -> Can not load class [com.example.MyProvider]\n// after (pom.xml)\n<dependency>\n  <groupId>com.example</groupId>\n  <artifactId>my-providers</artifactId>\n</dependency>","handlingStrategy":"try-catch","validationCode":"// Verify the class is loadable before handing its name to GraphQL runtime config\ntry {\n  Class.forName(\"com.example.MyTokenProvider\", false,\n      Thread.currentThread().getContextClassLoader());\n} catch (ClassNotFoundException e) {\n  throw new IllegalStateException(\"Token provider class missing from runtime classpath\", e);\n}","typeGuard":"function isClassLoadError(e) {\n  return e instanceof Error && /^Can not load class \\[/.test(e.message);\n}","tryCatchPattern":"try {\n  Class<?> provider = QuarkusClassloadingService.loadClass(\"com.example.MyTokenProvider\");\n} catch (RuntimeException e) {\n  if (e.getMessage().startsWith(\"Can not load class [\")) {\n    throw new IllegalStateException(\"Add the artifact containing \" + e.getMessage() + \" to runtime deps\", e);\n  }\n  throw e;\n}","preventionTips":["Double-check FQCNs in configuration; never mark provider classes 'provided' or 'optional' if used at runtime","Annotate reflectively loaded classes with @RegisterForReflection for native builds","Call setClassLoader explicitly when running outside standard Quarkus context","Verify with mvn dependency:tree that the class's artifact reaches the runtime module"],"tags":["graphql","classpath","runtime","classloading"],"backgroundTag":"class-not-found","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}