MethodHandles.lookup errors where publicLookup is ok
Alan Bateman
alan.bateman at oracle.com
Tue Sep 2 16:05:11 UTC 2025
On 02/09/2025 16:31, Charles Oliver Nutter wrote:
> I've run into various versions of this situation and I wonder if my
> expectations about MethodHandles.lookup vs publicLookup are flawed.
>
> This issue shows an IllegalAccessException "symbolic reference class
> is not accessible: class jdk.proxy4.$Proxy49" when using a Lookup
> produced by MethodHandles.lookup, but it works correctly when using
> publicLookup:
>
publicLookup has UNCONDITIONAL access so it assumes readability (like
core reflection). The lookup object obtained with MethodsHandles.lookup
does not so there may be cases where the caller needs to use
Module.addReads to add the read edge at runtime. I can't tell if this is
what you are running it but if you could create a small test case then
it might be possible to diagnose (the linked JBS issue seems to be using
JDK 8 so pre-dates modules and the encapsulation of proxy classes).
-Alan
More information about the core-libs-dev
mailing list