quarkusio/quarkus · error · GradleException

Failed to locate + pomPropsPath + on the classpath

Error message

Failed to locate + pomPropsPath + on the classpath

What it means

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.

Source

Thrown at devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java:631

                            appDep.getClassifier(), appDep.getExtension()), appDep.getFile());
                }
            }
        }
    }

    private Dependency getQuarkusGradleBootstrapResolver() {
        return getQuarkusBootstrapResolver("quarkus-bootstrap-gradle-resolver");
    }

    private Dependency getQuarkusMavenBootstrapResolver() {
        return getQuarkusBootstrapResolver("quarkus-bootstrap-maven-resolver");
    }

    private Dependency getQuarkusBootstrapResolver(String artifactId) {
        final String pomPropsPath = "META-INF/maven/io.quarkus/" + artifactId + "/pom.properties";
        final InputStream devModePomPropsIs = DevModeMain.class.getClassLoader().getResourceAsStream(pomPropsPath);
        if (devModePomPropsIs == null) {
            throw new GradleException("Failed to locate " + pomPropsPath + " on the classpath");
        }
        final Properties devModeProps = new Properties();
        try (InputStream is = devModePomPropsIs) {
            devModeProps.load(is);
        } catch (IOException e) {
            throw new GradleException("Failed to load " + pomPropsPath + " from the classpath", e);
        }
        final String devModeGroupId = devModeProps.getProperty("groupId");
        if (devModeGroupId == null) {
            throw new GradleException("Classpath resource " + pomPropsPath + " is missing groupId");
        }
        final String devModeArtifactId = devModeProps.getProperty("artifactId");
        if (devModeArtifactId == null) {
            throw new GradleException("Classpath resource " + pomPropsPath + " is missing artifactId");
        }
        final String devModeVersion = devModeProps.getProperty("version");
        if (devModeVersion == null) {
            throw new GradleException("Classpath resource " + pomPropsPath + " is missing version");

View on GitHub (pinned to e1c734241f)

Solutions

  1. 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
  2. Remove Quarkus version forced/resolved to a different release (check resolutionStrategy/dependency constraints) and align plugin and BOM versions
  3. Clear the Gradle cache for Quarkus artifacts: rm -rf ~/.gradle/caches/modules-2/files-2.1/io.quarkus and re-resolve
  4. Use a released Quarkus version rather than a locally built/shaded plugin jar

Example fix

// before (build.gradle.kts) — mismatched pin
implementation("io.quarkus:quarkus-core:3.99.0-custom")
// after — align plugin, BOM and dependencies
plugins { id("io.quarkus") version "3.15.1" }
dependencyManagement { imports { mavenBom("io.quarkus:quarkus-bom:3.15.1") } }
Defensive patterns

Strategy: validation

Validate before calling

// verify the plugin jar carries the metadata before building
File pluginJar = locate("io.quarkus:quarkus-gradle-plugin");
try (JarFile jf = new JarFile(pluginJar)) {
    if (jf.getEntry("META-INF/maven/io.quarkus/quarkus-bootstrap-runner/pom.properties") == null)
        throw new IllegalStateException("Plugin jar is missing Maven metadata; reinstall official plugin");
}

Prevention

When it happens

Trigger: getResourceAsStream(pomPropsPath) returns null for quarkus-bootstrap-runner (or similar artifact) in getQuarkusBootstrapResolver, called from getQuarkusGradleBootstrapResolver/getQuarkusMavenBootstrapResolver during dev-mode setup.

Common situations: 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.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/3ffce341fd8a22f6. Report an issue: GitHub.