[PATCH] buildscript java version detection fails on Linux/Ubuntu on Picked up JAVA_TOOL_OPTIONS

info at cuhka.com info at cuhka.com
Thu Aug 27 13:56:46 UTC 2015


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