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 20:43:04 UTC 2015


I was not aware of the existence of the -fullversion option. It is not 
listed at the Oracle site, afaik. Can it be assumed to be present in 
non-OpenJDK, non-Oracle JDKs?

David DeHaven schreef op 2015-08-26 15:38:
>> 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-



More information about the openjfx-dev mailing list