From bec7775d5657259a46fcacce161f2e69bd922672 Mon Sep 17 00:00:00 2001 From: Pontus Rydin Date: Mon, 3 Feb 2020 15:38:21 -0500 Subject: [PATCH] Fixed error handling when Java version can't be determined (#118) * Fixed error handling when Java version can't be determined * Made build getJavaExecutableVersion more resilient to output variations --- gradle/java.gradle | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/gradle/java.gradle b/gradle/java.gradle index 103544c195..952ec7bcee 100644 --- a/gradle/java.gradle +++ b/gradle/java.gradle @@ -234,14 +234,19 @@ JavaVersion getJavaExecutableVersion(String path) { commandLine = [path, "-version"] errorOutput = stream } - def matcher = stream.toString() =~ /^(?:java|openjdk) version "([^"]+)"/ - if (matcher) { - def version = JavaVersion.toVersion(matcher.group(1)) - cache.put(path, version) - return version - } else { - throw new GradleScriptException("Cannot determine java version: ${stream.toString}") + def output = stream.toString() + for (def line : output.split('\n')) { + line = line.trim() + def matcher = line =~ /^(?:java|openjdk) version "([^"]+)"/ + if (matcher) { + def version = JavaVersion.toVersion(matcher.group(1)) + cache.put(path, version) + return version + } } + + // Getting here means we didn't find a line matching the version pattern. + throw new GradleScriptException("Cannot determine java version. Executable: ${path}, output: ${output}", null) } }