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


Reply via email to