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
- 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
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
- 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
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
- Failed to load + pomPropsPath + from the classpath
- Failed to locate project's classes directory
- Failed to process + artifactPath
- Classpath resource + pomPropsPath + is missing groupId
- Classpath resource + pomPropsPath + is missing artifactId
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/3ffce341fd8a22f6.
Report an issue: GitHub.