apache/iceberg · error · GradleException

Found unsupported Kafka versions:

Error message

Found unsupported Kafka versions: 

What it means

settings.gradle validates requested Kafka versions against knownKafkaVersions. Any requested version (from -DkafkaVersions or the default) absent from the known list throws this GradleException listing the unsupported versions, blocking configuration of unsupported iceberg-kafka modules.

Solutions

  1. Use only versions listed in knownKafkaVersions (see gradle.properties).
  2. Omit -DkafkaVersions to use defaultKafkaVersions.
  3. If adding a new Kafka version intentionally, extend knownKafkaVersions and the corresponding build config.
  4. Fix typos in the version string.

Example fix

// before
./gradlew build -DkafkaVersions=0.10
// after
./gradlew build -DkafkaVersions=3.7
Defensive patterns

Strategy: validation

Validate before calling

KNOWN=$(grep knownKafkaVersions gradle.properties | cut -d= -f2); for v in $(echo $KAFKA_VERSIONS | tr ',' ' '); do [[ ",$KNOWN," == *",$v,"* ]] || echo "Unsupported Kafka: $v"; done

Prevention

When it happens

Trigger: Running Gradle with -DkafkaVersions=2.x (or another version not in knownKafkaVersions); misconfigured knownKafkaVersions in gradle.properties.

Common situations: Requesting an EOL Kafka version removed from the build; copying build flags from an older Iceberg branch; typos like '3.6.0' when only '3.6' is known.

Understand the failure class

Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.

Related errors


AI-assisted analysis of apache/iceberg@86d9c8fc54 (2026-09-12). Data as JSON: /api/errors/6cd18d36e37a4d2e. Report an issue: GitHub.

Appendix: source

Thrown at settings.gradle:100

if (!knownFlinkVersions.containsAll(flinkVersions)) {
  throw new GradleException("Found unsupported Flink versions: " + (flinkVersions - knownFlinkVersions))
}

List<String> knownSparkVersions = System.getProperty("knownSparkVersions").split(",")
String sparkVersionsString = System.getProperty("sparkVersions") != null ? System.getProperty("sparkVersions") : System.getProperty("defaultSparkVersions")
List<String> sparkVersions = sparkVersionsString != null && !sparkVersionsString.isEmpty() ? sparkVersionsString.split(",") : []

if (!knownSparkVersions.containsAll(sparkVersions)) {
  throw new GradleException("Found unsupported Spark versions: " + (sparkVersions - knownSparkVersions))
}

List<String> knownKafkaVersions = System.getProperty("knownKafkaVersions").split(",")
String kafkaVersionsString = System.getProperty("kafkaVersions") != null ? System.getProperty("kafkaVersions") : System.getProperty("defaultKafkaVersions")
List<String> kafkaVersions = kafkaVersionsString != null && !kafkaVersionsString.isEmpty() ? kafkaVersionsString.split(",") : []

if (!knownKafkaVersions.containsAll(kafkaVersions)) {
  throw new GradleException("Found unsupported Kafka versions: " + (kafkaVersions - knownKafkaVersions))
}

List<String> knownScalaVersions = System.getProperty("knownScalaVersions").split(",")
String scalaVersion = System.getProperty("scalaVersion") != null ? System.getProperty("scalaVersion") : System.getProperty("defaultScalaVersion")

if (!knownScalaVersions.contains(scalaVersion)) {
  throw new GradleException("Found unsupported Scala version: " + scalaVersion)
}

if (!flinkVersions.isEmpty()) {
  include 'flink'
  project(':flink').name = 'iceberg-flink'
}

if (flinkVersions.contains("1.20")) {
  include ":iceberg-flink:flink-1.20"
  include ":iceberg-flink:flink-runtime-1.20"
  project(":iceberg-flink:flink-1.20").projectDir = file('flink/v1.20/flink')

View on GitHub (pinned to 86d9c8fc54)