{"record":{"id":"c283f0b032cb1bf0","repo":"GoogleContainerTools/jib","slug":"helpfulsuggestions-forincompatiblebaseimagejavaver-c283f0","errorCode":null,"errorMessage":"HelpfulSuggestions.forIncompatibleBaseImageJavaVersionForGradle(${ex.getBaseImageMajorJavaVersion()}, ${ex.getProjectMajorJavaVersion()})","messagePattern":"HelpfulSuggestions\\.forIncompatibleBaseImageJavaVersionForGradle\\((.+?), (.+?)\\)","errorType":"exception","errorClass":"GradleException","httpStatus":null,"severity":"error","filePath":"jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildTarTask.java","lineNumber":193,"sourceCode":"              + ex.getInvalidFilesModificationTime(),\n          ex);\n\n    } catch (InvalidCreationTimeException ex) {\n      throw new GradleException(\n          \"container.creationTime should be an ISO 8601 date-time (see \"\n              + \"DateTimeFormatter.ISO_DATE_TIME) or a special keyword (\\\"EPOCH\\\", \"\n              + \"\\\"USE_CURRENT_TIMESTAMP\\\"): \"\n              + ex.getInvalidCreationTime(),\n          ex);\n\n    } catch (JibPluginExtensionException ex) {\n      String extensionName = ex.getExtensionClass().getName();\n      throw new GradleException(\n          \"error running extension '\" + extensionName + \"': \" + ex.getMessage(), ex);\n\n    } catch (IncompatibleBaseImageJavaVersionException ex) {\n      throw new GradleException(\n          HelpfulSuggestions.forIncompatibleBaseImageJavaVersionForGradle(\n              ex.getBaseImageMajorJavaVersion(), ex.getProjectMajorJavaVersion()),\n          ex);\n\n    } catch (InvalidImageReferenceException ex) {\n      throw new GradleException(\n          HelpfulSuggestions.forInvalidImageReference(ex.getInvalidReference()), ex);\n\n    } catch (ExtraDirectoryNotFoundException ex) {\n      throw new GradleException(\n          \"extraDirectories.paths contain \\\"from\\\" directory that doesn't exist locally: \"\n              + ex.getPath(),\n          ex);\n    } finally {\n      tempDirectoryProvider.close();\n      TaskCommon.finishUpdateChecker(projectProperties, updateCheckFuture);\n      projectProperties.waitForLoggingThread();\n    }\n  }","sourceCodeStart":175,"sourceCodeEnd":211,"githubUrl":"https://github.com/GoogleContainerTools/jib/blob/fb949e2676afbbd7dd7a1ef61e20251931325654/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildTarTask.java#L175-L211","documentation":"BuildTarTask.buildTar catches IncompatibleBaseImageJavaVersionException and converts it to a GradleException using HelpfulSuggestions.forIncompatibleBaseImageJavaVersionForGradle. Jib throws it when the project's Java major version is newer than the Java version the chosen base image supports (Distroless/Java base images are version-pinned), so the app would not run on that base image.","triggerScenarios":"Building with from { image = 'gcr.io/distroless/java' } (Java 8) or a Java-11 base image while the project compiles with Java 17+ (sourceCompatibility/targetCompatibility or toolchain), so Jib refuses the combination.","commonSituations":"Upgrading a project to Java 17 or 21 without updating the distroless base image tag from 'distroless/java' or 'distroless/java11' to 'distroless/java17'/'distroless/java21'; CI toolchain bump not mirrored in jib.from.image.","solutions":["Update the base image to one matching or exceeding the project Java version, e.g. 'gcr.io/distroless/java17-debian11' or 'gcr.io/distroless/java21-debian12'","Or lower the project's Java target (sourceCompatibility/toolchain) to match the base image","Use a version-agnostic base image (e.g. 'eclipse-temurin:17-jre') where Jib cannot infer a conflict"],"exampleFix":"// before\njib { from { image = 'gcr.io/distroless/java11-debian11' } } // project targets Java 17\n// after\njib { from { image = 'gcr.io/distroless/java17-debian11' } }","handlingStrategy":"validation","validationCode":"def projectJava = java.sourceCompatibility.majorVersion.toInteger()\ndef baseImageRequires = ['gcr.io/distroless/java': 8, 'gcr.io/distroless/java11-debian11': 11]\nassert projectJava <= (baseImageRequires[jib.from.image.get()] ?: 99) : 'base image Java version too old for project'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep the distroless base image tag in sync with sourceCompatibility/toolchain (java8/java11/java17/java21)","Centralize the Java version in one variable used by both java extension and jib.from.image","Prefer version-suffixed base image tags; avoid 'latest'"],"tags":["jib","gradle","java-version","base-image"],"backgroundTag":"incompatible-java-version","analyzedSha":"fb949e2676afbbd7dd7a1ef61e20251931325654","analyzedAt":"2026-09-06T14:04:09.491Z","contentChangedAt":"2026-09-06T14:04:09.491Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}