apache/maven · critical · IllegalStateException
The super POM {} was not found, please verify the integrity
Error message
The super POM {} was not found, please verify the integrity of your Maven installation What it means
Maven loads the super POM (the implicit parent of every model) from the classpath resource /org/apache/maven/model/pom-<version>.xml shipped inside the maven-impl artifact. If the resource is absent, DefaultSuperPomProvider throws IllegalStateException: the running installation is incomplete or its classpath mixes incompatible artifacts. The message asks the user to verify the integrity of the Maven installation.
Source
Thrown at impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultSuperPomProvider.java:61
* The cached super POM, lazily created.
*/
private static final Map<String, Model> SUPER_MODELS = new ConcurrentHashMap<>();
@Inject
public DefaultSuperPomProvider(ModelProcessor modelProcessor) {
this.modelProcessor = modelProcessor;
}
@Override
public Model getSuperPom(String version) {
return SUPER_MODELS.computeIfAbsent(Objects.requireNonNull(version), v -> readModel(version, v));
}
private Model readModel(String version, String v) {
String resource = "/org/apache/maven/model/pom-" + v + ".xml";
URL url = getClass().getResource(resource);
if (url == null) {
throw new IllegalStateException("The super POM " + resource + " was not found"
+ ", please verify the integrity of your Maven installation");
}
try (InputStream is = url.openStream()) {
String modelId =
"org.apache.maven:maven-api-impl:" + getImplementationVersion(getClass()) + ":super-pom-" + version;
return modelProcessor.read(XmlReaderRequest.builder()
.modelId(modelId)
.location(url.toExternalForm())
.inputStream(is)
.strict(false)
.build());
} catch (IOException e) {
throw new IllegalStateException(
"The super POM " + resource + " is damaged"
+ ", please verify the integrity of your Maven installation",
e);
}
}View on GitHub (pinned to e4093d4e12)
Solutions
- Inspect the maven-impl jar: unzip -l maven-impl-*.jar | grep 'pom-.*\\.xml' and confirm the needed version is present
- Resolve classpath conflicts (mvn dependency:tree | grep maven-impl) so only the matching version loads
- Reinstall or repair the Maven distribution if its jar is missing resources
- In embedded setups, pin one maven-impl version explicitly
Defensive patterns
Strategy: validation
Validate before calling
String modelVersion = "4.0.0";
URL superPom = getClass().getResource("/org/apache/maven/model/pom-" + modelVersion + ".xml");
if (superPom == null) {
throw new IllegalStateException(
"Maven installation has no super POM for model " + modelVersion
+ "; fix maven-impl on the classpath");
}
// safe to build models Prevention
- Pin a single maven-impl version in embedded-Maven dependency management
- Run a smoke model build after assembling a custom Maven distribution
- Check mvn dependency:tree for maven-impl conflicts before shipping
When it happens
Trigger: Model building calls getSuperPom(version) and the jar containing DefaultSuperPomProvider lacks a pom-<version>.xml for the requested model version: broken installation, shaded or pruned jar, or a conflicting older maven-impl winning on the classpath.
Common situations: Corrupted Maven distribution; applications embedding Maven with dependency conflicts on maven-impl; custom assemblies that strip resource files; building a model whose modelVersion has no super POM in the running Maven version.
Related errors
- The super POM {resource} was not found, please verify the in
- The super POM {resource} is damaged, please verify the integ
- The super POM {} is damaged, please verify the integrity of
- The version cannot be empty.
- Unable to lookup org.eclipse.aether.RepositorySystem
AI-assisted analysis of apache/maven@e4093d4e12 (2026-08-21).
Data as JSON: /api/errors/462d97a5cd50903d.
Report an issue: GitHub.