#!/usr/bin/env bash # Picks a JDK that Gradle can actually run on and exports JAVA_HOME. # # Ubuntu moved default-java to 25, which the Gradle version in this repo # refuses with a bare "IllegalArgumentException: 25.0.4" — an unhelpful # message for a build that worked yesterday. Sourced by the scripts under # tests/ and tools/; harmless when JAVA_HOME is already a supported JDK. # # . tests/helpers/jdk.sh set -u _jdk_major() { "$1/bin/java" -version 2>&1 | head -1 | sed -E 's/.*version "([0-9]+).*/\1/' } _jdk_pick() { local candidate major if [ -n "${JAVA_HOME:-}" ] && [ -x "${JAVA_HOME}/bin/java" ]; then major="$(_jdk_major "$JAVA_HOME")" if [ "$major" -ge 17 ] 2>/dev/null && [ "$major" -le 21 ] 2>/dev/null; then return 0 fi fi for candidate in \ /usr/lib/jvm/java-21-openjdk-amd64 \ /usr/lib/jvm/java-17-openjdk-amd64 \ "$HOME"/jdk-21* \ "$HOME"/jdk-17*; do [ -x "$candidate/bin/java" ] || continue export JAVA_HOME="$candidate" return 0 done echo "no JDK 17-21 found; Gradle cannot run on $(java -version 2>&1 | head -1)" >&2 return 1 } _jdk_pick