Gradle not working on Jigsaw
Alan Bateman
Alan.Bateman at oracle.com
Thu Oct 20 08:19:08 UTC 2016
On 20/10/2016 08:25, Cédric Champeau wrote:
> Yes, Gradle, Groovy and other third party libraries Gradle uses are
> broken since the changes to enforce strong encapsulation at runtime
> (preventing calls to setAccessible). I already raised the concern
> here, saying we have no clear idea of the impact of such a change at a
> larger scale, but it totally broke our efforts, and that's kind of
> depressing. We'll figure it out, I hope, but unfortunately we have no
> bandwidth to do it now. We're gladly accepting pull requests, though :)
>
We are in no doubt that changing setAccessible will expose a lot of
issues with existing code that uses it to get at non-public
types/members in JDK classes (the rubygrapefruit library that Gradle
uses is a good example as it seems to use setAccessible to get at the
underlying collection of an unmodifable collection so that it can modify
it).
In the original proposal (2015) then this method was changed so that it
cannot be used to directly break into non-exported packages (you can't
use it to get a private types of public types in sun.awt for example).
That was an attempt to strike a balance and avoid too much disruption
but it leaves the hole that is #AwkwardStrongEncapsulation. The latest
proposal in the JSR is an attempt to address that issue but it does
impact code that uses setAccessible to get at non-public types/members
in java.* classes. I assume this is what Stephen is running into with
his mail but I can't say for sure without seeing the exception.
Is the Gradle forum the best place to follow-up on these issues? (I
can't tell from Stephen's mail if it's Gradle or Groovy here).
-Alan
More information about the jigsaw-dev
mailing list