{"record":{"id":"3ffce341fd8a22f6","repo":"quarkusio/quarkus","slug":"failed-to-locate-pompropspath-on-the-classpath","errorCode":null,"errorMessage":"Failed to locate + pomPropsPath + on the classpath","messagePattern":"Failed to locate \\+ pomPropsPath \\+ on the classpath","errorType":"exception","errorClass":"GradleException","httpStatus":null,"severity":"error","filePath":"devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java","lineNumber":631,"sourceCode":"                            appDep.getClassifier(), appDep.getExtension()), appDep.getFile());\n                }\n            }\n        }\n    }\n\n    private Dependency getQuarkusGradleBootstrapResolver() {\n        return getQuarkusBootstrapResolver(\"quarkus-bootstrap-gradle-resolver\");\n    }\n\n    private Dependency getQuarkusMavenBootstrapResolver() {\n        return getQuarkusBootstrapResolver(\"quarkus-bootstrap-maven-resolver\");\n    }\n\n    private Dependency getQuarkusBootstrapResolver(String artifactId) {\n        final String pomPropsPath = \"META-INF/maven/io.quarkus/\" + artifactId + \"/pom.properties\";\n        final InputStream devModePomPropsIs = DevModeMain.class.getClassLoader().getResourceAsStream(pomPropsPath);\n        if (devModePomPropsIs == null) {\n            throw new GradleException(\"Failed to locate \" + pomPropsPath + \" on the classpath\");\n        }\n        final Properties devModeProps = new Properties();\n        try (InputStream is = devModePomPropsIs) {\n            devModeProps.load(is);\n        } catch (IOException e) {\n            throw new GradleException(\"Failed to load \" + pomPropsPath + \" from the classpath\", e);\n        }\n        final String devModeGroupId = devModeProps.getProperty(\"groupId\");\n        if (devModeGroupId == null) {\n            throw new GradleException(\"Classpath resource \" + pomPropsPath + \" is missing groupId\");\n        }\n        final String devModeArtifactId = devModeProps.getProperty(\"artifactId\");\n        if (devModeArtifactId == null) {\n            throw new GradleException(\"Classpath resource \" + pomPropsPath + \" is missing artifactId\");\n        }\n        final String devModeVersion = devModeProps.getProperty(\"version\");\n        if (devModeVersion == null) {\n            throw new GradleException(\"Classpath resource \" + pomPropsPath + \" is missing version\");","sourceCodeStart":613,"sourceCodeEnd":649,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java#L613-L649","documentation":"getQuarkusBootstrapResolver locates META-INF/maven/io.quarkus/<artifactId>/pom.properties on the plugin's classpath to determine the exact version/coordinates of the Quarkus bootstrap resolver artifact. If the resource stream is null (resource absent) it fails with this GradleException. It means the Quarkus Gradle plugin jar is missing its embedded Maven metadata — typically a broken, repackaged, or mismatched plugin distribution.","triggerScenarios":"getResourceAsStream(pomPropsPath) returns null for quarkus-bootstrap-runner (or similar artifact) in getQuarkusBootstrapResolver, called from getQuarkusGradleBootstrapResolver/getQuarkusMavenBootstrapResolver during dev-mode setup.","commonSituations":"Plugin jar built/shaded incorrectly (META-INF filtered out); mixing incompatible Quarkus plugin and core versions via forced dependency resolution; corrupted Gradle cache entry for the plugin jar.","solutions":["Check the plugin jar for the resource: unzip -l <jar> | grep pom.properties; if missing, replace the plugin dependency with an official quarkus-gradle-plugin version","Remove Quarkus version forced/resolved to a different release (check resolutionStrategy/dependency constraints) and align plugin and BOM versions","Clear the Gradle cache for Quarkus artifacts: rm -rf ~/.gradle/caches/modules-2/files-2.1/io.quarkus and re-resolve","Use a released Quarkus version rather than a locally built/shaded plugin jar"],"exampleFix":"// before (build.gradle.kts) — mismatched pin\nimplementation(\"io.quarkus:quarkus-core:3.99.0-custom\")\n// after — align plugin, BOM and dependencies\nplugins { id(\"io.quarkus\") version \"3.15.1\" }\ndependencyManagement { imports { mavenBom(\"io.quarkus:quarkus-bom:3.15.1\") } }","handlingStrategy":"validation","validationCode":"// verify the plugin jar carries the metadata before building\nFile pluginJar = locate(\"io.quarkus:quarkus-gradle-plugin\");\ntry (JarFile jf = new JarFile(pluginJar)) {\n    if (jf.getEntry(\"META-INF/maven/io.quarkus/quarkus-bootstrap-runner/pom.properties\") == null)\n        throw new IllegalStateException(\"Plugin jar is missing Maven metadata; reinstall official plugin\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Don't shade/repackage the Quarkus Gradle plugin","Keep plugin version aligned with quarkusPlatform/quarkus BOM version","Avoid aggressive dependency substitution on io.quarkus artifacts","Use released plugin versions in CI"],"tags":["gradle","classpath","plugin-packaging","pom-properties"],"backgroundTag":"missing-classpath-resource","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"}