{"record":{"id":"89822682e027f284","repo":"quarkusio/quarkus","slug":"quarkus-code-generation-phase-has-failed","errorCode":null,"errorMessage":"Quarkus code generation phase has failed","messagePattern":"Quarkus code generation phase has failed","errorType":"exception","errorClass":"GradleException","httpStatus":null,"severity":"error","filePath":"devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/worker/CodeGenWorker.java","lineNumber":58,"sourceCode":"        LOGGER.info(\"Generating Quarkus code for {}\", gav);\n        LOGGER.info(\"  launch mode:                  {}\", params.getLaunchMode().get());\n        LOGGER.info(\"  base name:                    {}\", params.getBaseName().get());\n        LOGGER.info(\"  generated source directory:   {}\", generatedSourceDir);\n        LOGGER.info(\"  build directory:              {}\", buildDir);\n\n        try (CuratedApplication appCreationContext = createAppCreationContext()) {\n\n            QuarkusClassLoader deploymentClassLoader = appCreationContext.createDeploymentClassLoader();\n            Class<?> codeGenerator = deploymentClassLoader.loadClass(CodeGenerator.class.getName());\n\n            Method initAndRun;\n            try {\n                initAndRun = codeGenerator.getMethod(INIT_AND_RUN, QuarkusClassLoader.class, PathCollection.class,\n                        Path.class, Path.class,\n                        Consumer.class, ApplicationModel.class, Properties.class, String.class,\n                        boolean.class);\n            } catch (Exception e) {\n                throw new GradleException(\"Quarkus code generation phase has failed\", e);\n            }\n\n            Consumer<Path> sourceRegistrar = (p) -> {\n            };\n\n            LaunchMode launchMode = params.getLaunchMode().get();\n\n            initAndRun.invoke(null,\n                    // QuarkusClassLoader classLoader,\n                    deploymentClassLoader,\n                    // PathCollection sourceParentDirs,\n                    PathList.from(\n                            params.getSourceDirectories().getFiles().stream().map(File::toPath).collect(Collectors.toList())),\n                    // Path generatedSourcesDir,\n                    generatedSourceDir,\n                    // Path buildDir,\n                    buildDir,\n                    // Consumer<Path> sourceRegistrar,","sourceCodeStart":40,"sourceCodeEnd":76,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/worker/CodeGenWorker.java#L40-L76","documentation":"CodeGenWorker runs Quarkus code generation (e.g. REST/gRPC/Avro stub generation) by reflectively loading CodeGenerator.initAndRun from a QuarkusClassLoader. This GradleException is thrown when the reflective getMethod lookup for INIT_AND_RUN fails (NoSuchMethodException or related), meaning the code generator class found on the generated-resources classpath does not expose the expected method signature — usually a Quarkus/plugin version mismatch or a corrupted code-generation cache.","triggerScenarios":"Running ./gradlew quarkusGenerateCode when the resolved CodeGenerator class does not declare initAndRun(QuarkusClassLoader, PathCollection, Path, Path, Consumer, ApplicationModel, Properties, String, boolean) — caused by mismatched quarkus-core vs extension generator versions, a stale build/generated-sources cache, or the wrong class being loaded from the classloader.","commonSituations":"Upgrading Quarkus BOM partially (some extensions pinned to old versions); stale build/ directory after an upgrade; Gradle daemon caching an old codegen jar; classpath pollution where an incompatible CodeGenerator implementation shadows the right one.","solutions":["Align all Quarkus plugin, core, and extension versions to the same release.","Clean generated caches: ./gradlew clean, or delete build/generated-sources, then re-run quarkusGenerateCode.","Stop and restart the Gradle daemon (./gradlew --stop) to drop stale classloader state.","Run with --info/--debug to see which CodeGenerator class was loaded and from which jar."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"./gradlew --stop           # clear stale daemon classloaders\nrm -rf build/generated-sources  # remove stale codegen output\n# then rebuild with aligned versions","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always upgrade the whole Quarkus stack (plugin + core + extensions) together","Clean generated-sources after any Quarkus version change","Avoid pinning individual Quarkus extensions to older versions than the BOM","Restart the Gradle daemon after upgrading build plugins"],"tags":["gradle","codegen","reflection","version-mismatch"],"backgroundTag":"version-mismatch","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"}