Thanks Uwe! To test with JDK 9 you'll need Gradle 4.1-milestone-1. I know Jochen has some special setup to make it work on previous releases of Gradle but I didn't try that.
2017-07-05 20:09 GMT+02:00 Uwe Schindler <[email protected]>: > Here is my quick patch: > > https://github.com/apache/groovy/compare/master...uschindler:java9/ > trySetAccessible > > > > Sorry for my ignorance, but how to run tests with Java 9? Gradle fails for > me to launch daemon! > > > > Uwe > > > > ----- > > Uwe Schindler > > [email protected] > > ASF Member, Apache Lucene PMC / Committer > > Bremen, Germany > > http://lucene.apache.org/ > > > > *From:* Uwe Schindler [mailto:[email protected]] > *Sent:* Wednesday, July 5, 2017 7:27 PM > *To:* [email protected]; [email protected] > *Subject:* RE: trySetAccessible for Java 9 > > > > Working on it. > > > > I just looked at the code and found out that it already has a „fallback“ > mechanism: It first tries setAccessible(array, true) and then falls back to > do it one by one. I think with Java 9, wenn cannot do this. So I’d change > that to: > > > > - Get methodhandle in static initializer, if not there set to NULL > - In the makeAccessible method check for nullness of methodhandle: if > null proceed as before, if not do a for-loop and call trySetAccesible() on > all, ignoring return value. > > > > ----- > > Uwe Schindler > > [email protected] > > ASF Member, Apache Lucene PMC / Committer > > Bremen, Germany > > http://lucene.apache.org/ > > > > *From:* Cédric Champeau [mailto:[email protected] > <[email protected]>] > *Sent:* Wednesday, July 5, 2017 7:10 PM > *To:* [email protected] > *Cc:* Russel Winder <[email protected]> > *Subject:* Re: trySetAccessible for Java 9 > > > > Thanks Uwe, patches/PRs are very welcome :) I did miss your suggestion, > sorry I wasn't able to follow everything on this list lately. > > > > The risk I saw was that the MethodHandle class wasn't always available, > but for 2.4+, it's not a problem! > > > > > > 2017-07-05 19:07 GMT+02:00 Uwe Schindler <[email protected]>: > > Hi, > > > > I made this suggestion about a month ago! In Lucene/Elasticsearch we do > everything with MethodHandles that requires new Java 9 APIs (currently > Elasticsearch’s Painless Script engine is the first one that uses indy > string concats!). In general I would not use an if/then/else construct at > all. Just try to get a MethodHandle to trySetAccessible(), if this fails > get a MethodHandle to a local/private method with same signature. > > > > Finally you may need to adapt the MethodHandle to the right types and then > call it _*always*_ with correct casting to make javac use correct types. > Be sure to make the MethodHandle a static final constant somewhere! This > removed the need for a if/then/else on every call. > > > > I may provide a patch, if you like. I’d just need some directions where to > look at. Should be a 10 liner. > > > > Uwe > > > > ----- > > Uwe Schindler > > [email protected] > > ASF Member, Apache Lucene PMC / Committer > > Bremen, Germany > > http://lucene.apache.org/ > > > > *From:* Cédric Champeau [mailto:[email protected]] > *Sent:* Wednesday, July 5, 2017 6:55 PM > *To:* Russel Winder <[email protected]> > *Cc:* [email protected] > *Subject:* Re: trySetAccessible for Java 9 > > > > Actually I'm realizing that the `MethodHandle` API came with Java 7. So we > _can_ compile against it. So I guess an option is to have the method handle > redirect to `trySetAccessible` if the detected runtime is Java 9, and a > backport method if < 9. > > > > > > > > 2017-07-05 18:41 GMT+02:00 Russel Winder <[email protected]>: > > On Wed, 2017-07-05 at 18:28 +0200, Cédric Champeau wrote: > > > […] > > Any suggestion? > > How about leave Groovy 2.x as a "can only build on JDK8", and put all > effort > for a JDK9 build on Groovy 3.x which, as I understand it requires JDK8 as a > runtime. This would seem to minimise hassle and maximise forward-looking > benefit. Unless I am missing something. > > -- > Russel. > ============================================================ > ================= > Dr Russel Winder t:+44 20 7585 2200 voip:sip: > [email protected] > 41 Buckmaster Road m:+44 7770 465 077 xmpp:[email protected] > London SW11 1EN, UK w: www.russel.org.uk skype:russel_winder > > > > >
