[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-openjfx-dev
Subject:    Re: Proposed fix: buildscript java version detection fails on Linux/Ubuntu on Picked up JAVA_TOOL_OP
From:       Kevin Rushforth <kevin.rushforth () oracle ! com>
Date:       2015-08-26 22:42:51
Message-ID: 55DE40EB.3020105 () oracle ! com
[Download RAW message or body]

I will also note that OpenJFX depends on OpenJDK, so I am fine using 
"-fullversion" as long as it works in both OpenJDK and Oracle JDK 
builds, and both before and after the version string changes in JEP-223.

-- Kevin


David DeHaven wrote:
> I can't comment on non-Oracle JDKs, but It's in libjli so anything based on OpenJDK \
> should support it. 
> -DrD-
> 
> 
> > 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-
> > > 
> 
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic