quarkusio/quarkus · error · RuntimeException
${dependencies} belong to different platform streams ${strea
Error message
${dependencies} belong to different platform streams ${streams} while only one stream per platform is allowed. What it means
PlatformInfo.getPossibleAlignments() collects the set of platform streams referenced by the imported platform BOMs and asserts they all belong to one stream per platform. If the dependency list references two different streams (e.g. an old and new Quarkus stream BOM mixed together), it throws a RuntimeException describing the conflicting streams. Only one stream per platform is allowed in an application model.
Source
Thrown at independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/PlatformInfo.java:51
return streams.get(0).isAligned(importedBoms);
}
List<List<String>> getPossibleAlignments(Collection<ArtifactCoords> importedPlatformBoms) {
if (streams.size() > 1) {
final StringBuilder buf = new StringBuilder();
buf.append("Imported BOMs ");
final Iterator<ArtifactCoords> it = importedPlatformBoms.iterator();
if (it.hasNext()) {
buf.append(it.next());
while (it.hasNext()) {
buf.append(", ").append(it.next());
}
}
buf.append(" belong to different platform streams ").append(streams.get(0));
for (int i = 1; i < streams.size(); ++i) {
buf.append(", ").append(streams.get(i));
}
throw new RuntimeException(buf.append(" while only one stream per platform is allowed.").toString());
}
return streams.get(0).getPossibleAlignemnts(importedPlatformBoms);
}
PlatformStreamInfo getOrCreateStream(String stream) {
PlatformStreamInfo s = getStream(stream);
if (s == null) {
s = new PlatformStreamInfo(stream);
streams.add(s);
}
return s;
}
Collection<PlatformStreamInfo> getStreams() {
return streams;
}
PlatformStreamInfo getStream(String stream) {View on GitHub (pinned to e1c734241f)
Solutions
- Align all imported platform BOMs to the same platform stream/version
- Remove or upgrade the stale platform BOM reference (often in a parent POM or dependencyManagement)
- Run the Quarkus update tooling / mvn versions:display-dependency-updates to find the mismatched BOM
Example fix
<!-- before --> <dependency> <groupId>io.quarkus.platform</groupId> <artifactId>quarkus-bom</artifactId> <version>3.2.0.Final</version> </dependency> <dependency> <groupId>io.quarkus.platform</groupId> <artifactId>quarkus-amazon-services-bom</artifactId> <version>3.5.0.Final</version> </dependency> <!-- after: both at the same stream --> <dependency> <groupId>io.quarkus.platform</groupId> <artifactId>quarkus-bom</artifactId> <version>3.5.0.Final</version> </dependency> <dependency> <groupId>io.quarkus.platform</groupId> <artifactId>quarkus-amazon-services-bom</artifactId> <version>3.5.0.Final</version> </dependency>
Defensive patterns
Strategy: validation
Validate before calling
Set<String> streams = importedBoms.stream()
.map(b -> b.getVersion())
.collect(Collectors.toSet());
if (streams.size() > 1) {
throw new IllegalStateException("Multiple platform streams in use: " + streams);
} Try / catch
try {
var alignments = platformInfo.getPossibleAlignments(importedPlatformBoms);
} catch (RuntimeException e) {
throw new IllegalStateException("Mixed platform streams detected: " + e.getMessage(), e);
} Prevention
- Import all platform BOMs from the same Quarkus release train
- Let quarkus-maven-plugin update manage BOM versions together
- Avoid pinning individual platform BOM versions in dependencyManagement
When it happens
Trigger: Calling getPossibleAlignments() on a PlatformInfo whose importedPlatformBoms contain BOMs from more than one stream of the same platform, e.g. io.quarkus.platform:quarkus-bom:3.2.0.Final together with quarkus-bom:3.5.0.Final.
Common situations: Mixing Quarkus BOM versions in dependencyManagement (one managed by a parent POM, another pinned explicitly); stale imports after a Quarkus upgrade where one platform BOM wasn't updated; transitive platform imports from different Quarkus versions.
Related errors
- ${misalignmentReport}
- Unable to deserialize the dev mode context. Does the Quarkus
- The version 2 CLI can not be used with Quarkus 1.x projects.
- Quarkus code generation phase has failed
- Unexpected mode:
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/12813f94efd0adb0.
Report an issue: GitHub.