On 09/12/2020 22:45, Johannes Kuhn wrote:
Hope I got the right mailing list, otherwise please direct me there.

Module.addOpens currently doesn't produce an illegal access warning if the target package has only be opened for illegal access.

The Module methods were not intended to emit warnings. The warnings are supposed to be emitted by calls to AccessibleObject methods that will fail when the default switches to deny illegal reflective access by default.

I think your argument is that if any of the standard or JDK modules opens a package for illegal reflective access then code on the class path can use Module.addOpens to open the package, which has the effective of suppressing warnings. That behavior is there to support the --add-opens command line option.

So I think this needs a bit of thinking time to see if it's worth trying to do anything here. The default has switched for Java 16 and the intention is that the --illegal-access option will be removed by a future JEP. I agree it would be sad to see hacks like this in production, it would be far better to channel the energy being put into hacking around warnings to fixing fragile code to not rely on JDK internals.

-Alan

Reply via email to