Gradle not working on Jigsaw
Alan Bateman
Alan.Bateman at oracle.com
Thu Oct 20 14:14:19 UTC 2016
On 20/10/2016 14:48, Jochen Theodorou wrote:
> :
>
> I still wish you had at least not included protected members. Sure,
> protected is not public and protected is always a pain in the butt, I
> still fail to comprehend the logic that a class can extend a class
> from another module and then use the protected methods of the super
> class, but setAccessible is not allowed to be used to gain access to
> it from anywhere but that same class.
This might appear to be an anomaly but remember you don't have the
receiver at this point. You could have setAccessible silently fail so
that the access check happens at newInstance/invoke/get/put but I don't
see anyone being happy with that. That said, if you are using core
reflection to access a protected member in the same package or super
type then you don't need setAccessible in the first place as the access
check should succeed (there have been issues with protected members that
Peter has recently fixed in jdk9/dev, I don't know if you've run into that).
>
> could be Groovy 2.4.7, that kind of error is fixed in 2.4.8... once
> it is released, which we are currently working on. Because 2.4.7
> assumes either all of the class can be made accessible or none. And
> that is not true with #AwkwardStrongEncapsulation anymore. Which also
> means meta class creation will take a lot longer, since we now cannot
> use the array-taking setAccessible method in all cases anymore. Would
> have been nice to have a version of setAccessible that just makes
> accessible what is allowed and maybe reports back for those that are
> not allowed.
A trySetAccessible is possible although a @CS variant of accessCheck
(like in MH.Lookup) might be more general. I think we need to be
cautious about adding APIs here and so would be interesting to get some
performance data here (I don't think I've seen the bulk setAccessible
used very often, it's almost always the instance method).
>
> As for discussion about Gradle with #AwkwardStrongEncapsulation I have
> not seen any public discussion about this at gradle yet.
There is a command-line option to workaround specific usages, I think
part of the challenge is knowing if all usages have been identified and
where to put the VM options (gradle.properties for example) but that's a
discussion for the Gradle forum I guess.
-Alan
More information about the jigsaw-dev
mailing list