quarkusio/quarkus · error · MojoExecutionException

Failed to locate <pomPropsPath> on the classpath

Error message

Failed to locate <pomPropsPath> on the classpath

What it means

DevMojo loads the pom.properties resource of quarkus-bootstrap-maven-resolver from its own classloader to determine dev-mode coordinates. If that classpath resource cannot be found it throws this MojoExecutionException. It signals a broken or incomplete quarkus-bootstrap-maven-resolver jar on the plugin classpath.

Source

Thrown at devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java:1707

            throws MojoExecutionException, DependencyResolutionException {

        ResolvedDependency coreDeployment = null;
        for (ResolvedDependency d : appModel.getDependencies()) {
            if (d.isDeploymentCp() && d.getArtifactId().equals("quarkus-core-deployment")
                    && d.getGroupId().equals(IO_QUARKUS)) {
                coreDeployment = d;
                break;
            }
        }
        if (coreDeployment == null) {
            throw new MojoExecutionException(
                    "Failed to locate io.quarkus:quarkus-core-deployment on the application build classpath");
        }

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

View on GitHub (pinned to e1c734241f)

Solutions

  1. Delete the io/quarkus/quarkus-bootstrap-maven-resolver directory from the local repository (~/.m2/repository) and rebuild with -U to re-download
  2. Upgrade or reinstall the quarkus-maven-plugin to a consistent Quarkus version
  3. Check that no shade/minimize configuration strips META-INF/maven from plugin dependencies

Example fix

// before
# corrupted local artifact
rm -rf ~/.m2/repository/io/quarkus/quarkus-bootstrap-maven-resolver
mvn -U quarkus:dev
Defensive patterns

Strategy: validation

Validate before calling

unzip -p ~/.m2/repository/io/quarkus/quarkus-bootstrap-maven-resolver/<v>/quarkus-bootstrap-maven-resolver-<v>.jar META-INF/maven/io.quarkus/quarkus-bootstrap-maven-resolver/pom.properties

Prevention

When it happens

Trigger: DevMojo.class / DevModeMain classloader returns null for META-INF/maven/io.quarkus/quarkus-bootstrap-maven-resolver/pom.properties — i.e. the resolver jar is missing, stripped, or repackaged without its META-INF/maven metadata.

Common situations: A partially downloaded or corrupted local Maven repository jar; an uber/relocated repackaging of quarkus-bootstrap-maven-resolver; aggressive jar filtering (minimizeJar) or shaded builds dropping META-INF/maven; proxy-mirrored repository serving truncated artifacts.

Related errors


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