quarkusio/quarkus · error · RuntimeException
Platform ${platformKey} does not include any stream
Error message
Platform ${platformKey} does not include any stream What it means
Platform.getRecommendedStream() is a convenience that returns the first stream of the platform. If the platform's streams collection is empty there is nothing to recommend, so it throws RuntimeException identifying the platform key. It indicates an incomplete or degenerate platform catalog entry.
Source
Thrown at independent-projects/tools/registry-client/src/main/java/io/quarkus/registry/catalog/Platform.java:26
import io.quarkus.registry.json.JsonBuilder;
public interface Platform {
String getPlatformKey();
String getName();
Collection<PlatformStream> getStreams();
Map<String, Object> getMetadata();
PlatformStream getStream(String id);
@JsonIgnore
default PlatformStream getRecommendedStream() {
final Collection<PlatformStream> streams = getStreams();
if (streams.isEmpty()) {
throw new RuntimeException("Platform " + getPlatformKey() + " does not include any stream");
}
return streams.iterator().next();
}
default Mutable mutable() {
return new PlatformImpl.Builder(this);
}
interface Mutable extends Platform, JsonBuilder<Platform> {
Mutable setMetadata(Map<String, Object> metadata);
Mutable setPlatformKey(String platformKey);
Mutable setName(String name);
Mutable setStreams(Collection<PlatformStream> streams);
Mutable addStream(PlatformStream stream);View on GitHub (pinned to e1c734241f)
Solutions
- Check streams.isEmpty()/getStreams() before calling getRecommendedStream() and pick a platform with streams.
- Use a different platformKey whose catalog actually contains streams.
- Fix the platform catalog JSON on the registry side to include at least one stream.
- Guard with try-catch and fall back to a known-good platform.
Example fix
// before
PlatformStream s = platform.getRecommendedStream(); // throws if empty
// after
if (!platform.getStreams().isEmpty()) {
PlatformStream s = platform.getRecommendedStream();
} else {
// pick another platform or skip
} Defensive patterns
Strategy: type-guard
Validate before calling
// Java
if (platform == null || platform.getStreams() == null || platform.getStreams().isEmpty()) {
// skip or choose another platform
} Type guard
// Java
static Optional<PlatformStream> recommendedStreamOrNull(Platform p) {
return (p == null || p.getStreams().isEmpty())
? Optional.empty()
: Optional.of(p.getStreams().iterator().next());
} Try / catch
// Java
try {
PlatformStream s = platform.getRecommendedStream();
} catch (RuntimeException e) {
if (e.getMessage().endsWith("does not include any stream")) {
// fall back to another platformKey
}
throw e;
} Prevention
- Check getStreams().isEmpty() before getRecommendedStream() when catalogs may be partial.
- Prefer explicit getStream(id) with a known stream id for critical tooling.
- Validate platform catalog completeness when mirroring registries.
- Skip platforms without streams instead of assuming one exists.
When it happens
Trigger: Calling getRecommendedStream() on a Platform deserialized from a platform catalog JSON whose streams array is empty — e.g. a registry returning a platform entry with no published streams for the requested version.
Common situations: A newly created/partially published platform in a registry; an internal registry with a placeholder platform entry; filtered-out streams leaving an empty list after upstream filtering.
Related errors
- Stream ${id} does not include any release
- ${misalignmentReport}
- Failed to add platform properties + artifact
- Failed to initialize Quarkus extension catalog resolver
- No platforms detected in the project
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/fc1346d1ab676539.
Report an issue: GitHub.