> The gradle build tries to find the version of the used Java JDK by running > 'java -version', skipping the first line and expects to find the version in > the second line. > > However, on Linux (Ubuntu) the first line of *any* Java invocation is "Picked > up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar"[1], thus > failing at detection of the version, aborting the build. > > The 'Pickup up...' line is a standard feature of the JDK and a legacy that > doesn't seem to be removed soon[2]. > > I guess the build script needs to accommodate for this. > > Proposed fix: > > // Determine the verion of Java in JDK_HOME. It looks like this: > // > // $ java -version > // Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar > // 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) > // > // The first line is optional, we need to parse the third line > def inStream = new java.io.BufferedReader(new java.io.InputStreamReader(new > java.lang.ProcessBuilder(JAVA, "-version").start().getErrorStream())); > try { > String v = inStream.readLine(); > > if (v != null) { > if (v.startsWith("Picked up")) { > inStream.readLine(); > } > > v = inStream.readLine();
Why not just use "java -fullversion" instead? $ java -fullversion java full version "1.8.0_60-ea-b14" $ JAVA_TOOL_OPTIONS="-Xmx512M" java -fullversion java full version "1.8.0_60-ea-b14" $ java -version java version "1.8.0_60-ea" Java(TM) SE Runtime Environment (build 1.8.0_60-ea-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.60-b14, mixed mode) $ JAVA_TOOL_OPTIONS="-Xmx512M" java -version Picked up JAVA_TOOL_OPTIONS: -Xmx512M java version "1.8.0_60-ea" Java(TM) SE Runtime Environment (build 1.8.0_60-ea-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.60-b14, mixed mode) It's a lot less stuff to parse. Also, "java -fullversion" does not start the VM, so should be faster. -DrD-