Proposed fix: buildscript java version detection fails on Linux/Ubuntu on Picked up JAVA_TOOL_OPTIONS

info at cuhka.com info at cuhka.com
Wed Aug 26 17:08:43 UTC 2015


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();


[1] https://community.oracle.com/thread/1239778?start=0&tstart=0
[2] https://bugs.openjdk.java.net/browse/JDK-8039152




More information about the openjfx-dev mailing list