[PATCH] buildscript java version detection fails on Linux/Ubuntu on Picked up JAVA_TOOL_OPTIONS
Maurice le Rutte
info at cuhka.com
Sat Aug 29 09:34:29 UTC 2015
Since I haven't received any additional feedback, should I push this patch?
Op 27 aug. 2015 15:56 schreef info at cuhka.com:
>
> I've adapted the build.gradle to use java -fullversion instead of java
> -version, parsing the result with a regexp.
>
> diff -r 9b5fc7c1e5e6 build.gradle
> --- a/build.gradle Fri Aug 07 18:35:42 2015 -0700
> +++ b/build.gradle Thu Aug 27 15:52:11 2015 +0200
> @@ -719,29 +719,27 @@
> if (!file(JAVAH).exists()) throw new Exception("Missing or incorrect
> path to 'javah': '$JAVAH'. Perhaps bad JDK_HOME? $JDK_HOME")
> if (!file(JAVADOC).exists()) throw new Exception("Missing or
> incorrect path to 'javadoc': '$JAVADOC'. Perhaps bad JDK_HOME?
> $JDK_HOME")
>
> -
> +
> // Determine the verion of Java in JDK_HOME. It looks like this:
> //
> -// $ java -version
> -// java version "1.7.0_45"
> -// Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
> -// Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
> -//
> -// We need to parse the second line
> -def inStream = new java.io.BufferedReader(new
> java.io.InputStreamReader(new java.lang.ProcessBuilder(JAVA,
> "-version").start().getErrorStream()));
> +// $ java -fullversion
> +// for OpenJDK: openjdk full version "1.8.0_45-internal-b14"
> +// for Oracle JDK: java full version "1.8.0_45-b14"
> +
> +def inStream = new java.io.BufferedReader(new
> java.io.InputStreamReader(new java.lang.ProcessBuilder(JAVA,
> "-fullversion").start().getErrorStream()));
> try {
> - if (inStream.readLine() != null) {
> - String v = inStream.readLine();
> - if (v != null) {
> - int ib = v.indexOf(" (build ");
> - if (ib != -1) {
> - String ver = v.substring(ib + 8, v.size() - 1);
> -
> - defineProperty("jdkRuntimeVersion", ver)
> - defineProperty("jdkVersion", jdkRuntimeVersion.split("-")[0])
> - defineProperty("jdkBuildNumber",
> jdkRuntimeVersion.substring(jdkRuntimeVersion.lastIndexOf("-b") + 2))
> - }
> - }
> + def v = inStream.readLine();
> +
> + if (v != null) {
> + def pattern =
> java.util.regex.Pattern.compile("^[^\"]*\"((\\d+(?:\\.\\d+)*)_(\\d+))(?:-\\w+)?(?:-b(\\d+))\"\$")
> + def matcher = pattern.matcher(v)
> +
> + if (matcher.matches()) {
> + defineProperty("jdkVersion", matcher.group(1))
> + defineProperty("jdkRuntimeVersion", matcher.group(2))
> + defineProperty("jdkUpdate", matcher.group(3))
> + defineProperty("jdkBuildNumber", matcher.group(4))
> + }
> }
> } finally {
> inStream.close();
>
More information about the openjfx-dev
mailing list