Groovy with Jigsaw
Alan Bateman
Alan.Bateman at oracle.com
Fri Sep 11 12:47:38 UTC 2015
On 11/09/2015 13:11, Jochen Theodorou wrote:
> Am 11.09.2015 13:00, schrieb Uwe Schindler:
>> Just to conclude, there are 2 problems around setAccessible:
>>
>> First, it throws a new Exception type. This makes almost any Groovy
>> script fail at some point, because it tries to add some meta class on
>> the scripting level, and this call setAccessible on all fields and
>> methods of any class used in the script, only catching
>> SecurityException but not the new one. My preferred solution would be
>> to make the new InaccessibleObjectException as subclass of
>> SecurityException (and add some documentation why this is done like
>> that). Please note this does not differ from current Java 8 spec,
>> where setAccessible may throw SecurityException without a security
>> manager on some special objects (Class constructor). I agree, this is
>> also strange (UOE would be more correct), but the same solution could
>> be taken here, too.
Yes, this a incompatible change as InaccessibleObjectException is new.
We might need to look at this again but changing it to security
exception (or a sub-type) is really icky. One thing that would be useful
to find setAccessible usages in other libraries to see if security
exception is caught or handled.
>>
>> Second: AccessibleObject#setAccessible was made final
I have a patch to resolve this one, just needs more testing, there was
no intention to break anyone with this. My guess is that it is is very
rare to extent AccessibleObject outside of java.lang.reflect.
>
> It doesn't end there. I have yet to investigate what it means if the
> system class loader is no URLClassLoader per default anymore. This
> will have impact on Groovy's @Grab. This will cause problems with for
> example loading jdbc drivers at runtime.
It's always been possible to configure the system class loader to be
something else. So I'm curious what you do if it is a URLClassLoader,
are you just looking for the class path?
> :
>
> And somebody has to explain to me why this is supposed to be different
> for Nashorn. I would imagine it is even worse there, since Nashorn can
> see internal APIs, that are hidden to others and since it is part of
> the JDK.
Nashorn is updated in the EA builds to work with modules, it is spinning
dynamic modules at run-time. I think it requires building up examples of
real needs before thinking about an API here.
-Alan
More information about the jigsaw-dev
mailing list