[GitHub] groovy pull request #784: support JAVA_HOME including spaces

2018-08-17 Thread asfgit
Github user asfgit closed the pull request at:

https://github.com/apache/groovy/pull/784


---


[GitHub] groovy pull request #784: support JAVA_HOME including spaces

2018-08-14 Thread am4dr
GitHub user am4dr opened a pull request:

https://github.com/apache/groovy/pull/784

support JAVA_HOME including spaces

Since Groovy 2.5.2, JAXB modules are added automatically based on detected 
Java version.
But in my environment, NoClassDefFoundError for JAXB is still thrown.

```console
$ where java
C:\Program Files\Java\jdk-10.0.2\bin\java.exe

$ groovy --version
Groovy Version: 2.5.2 JVM: 10.0.2 Vendor: "Oracle Corporation" OS: Windows 
10

$ type hello.groovy
println "hello, Groovy 2.5.2"

$ groovy hello.groovy
Caught: java.lang.NoClassDefFoundError: Unable to load class 
org.apache.groovy.jaxb.extensions.JaxbExtensions due to missing dependency 
javax/xml/bind/JAXBContext
java.lang.NoClassDefFoundError: Unable to load class 
org.apache.groovy.jaxb.extensions.JaxbExtensions due to missing dependency 
javax/xml/bind/JAXBContext
at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
```

Java version detection in startGroovy.bat seems not to be able to handle 
JAVA_HOME containing spaces.

ref: version detection in startGroovy.bat

https://github.com/apache/groovy/blob/223366702a13ef369f216af2ba443670f42f02a1/src/bin/startGroovy.bat#L269-L272


Before this change, `JAVA_VERSION` is empty.
```console
# enable DEBUG to show echos
$ set DEBUG=1

$ groovy -v

...
> for /F "tokens=3" %g in ('C:\Program Files\Java\jdk-10.0.2\bin\java.exe 
-version 2>&1 | findstr /i "version"') do (SET JAVA_VERSION=%g )

> for /F "useback tokens=*" %a in ('') do set JAVA_VERSION=%~a
...
```

After, `JAVA_VERSION` set correctly.
```console
$ groovy -v

...
> for /F "tokens=3" %g in ('call "C:\Program 
Files\Java\jdk-10.0.2\bin\java.exe" -version 2>&1 | findstr /i "version"') do 
(SET JAVA_VERSION=%g )

> (SET JAVA_VERSION="10.0.2" )

> for /F "useback tokens=*" %a in ('"10.0.2"') do set JAVA_VERSION=%~a
...
```

You can merge this pull request into a Git repository by running:

$ git pull https://github.com/am4dr/groovy 
support-java_home-including-spaces

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/groovy/pull/784.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #784


commit a3825e3b11a88059dc2d44cae0611f8da7f1054e
Author: amadarain 
Date:   2018-08-14T08:16:16Z

support JAVA_HOME including spaces




---