Hi Charlie,
This is definitely a bug in the JDK, but I need more investigation to ensure if
the issue lies in Lookup or Proxy. I guess this might relate to the fact that
proxy dynamic modules are open to java.base as an implementation artifact,
because the public lookup has Object.class as its lookup class.
Since proxy has different module configurations depending on whether it has
module-private or package-private interfaces, can you share a minimal setup
where you can replicate this issue? I tried replicating on:
Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), new Class<?>
[]{Runnable.class}, (_, _, _) -> {return null;})
In jshell, and failed to replicate your failure with Lookup::accessClass.
Regards,
Chen Liang
________________________________
From: core-libs-dev <[email protected]> on behalf of Charles
Oliver Nutter <[email protected]>
Sent: Tuesday, September 2, 2025 10:31 AM
To: [email protected] <[email protected]>
Subject: MethodHandles.lookup errors where publicLookup is ok
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:
https://github.com/jruby/jruby/issues/8987#issuecomment-3245803956
My expectation would be that if publicLookup works, then lookup should also
work. I've filed a similar issue in the past (unresolved) where I was forced to
use publicLookup instead of lookup:
https://bugs.openjdk.org/browse/JDK-8313913
The error is similar here, but I'm not sure if it's related (module system
should have been fully booted by the time of the JRuby failure).
If my expectation is correct, this is a new version of the bug and I can file
an issue. It's happening at least as late as JDK 24.0.2.
If my expectation is not correct, please explain to me how I can know whether
lookup will produce errors when publicLookup does not.
Charles Oliver Nutter
Architect and Technologist
Headius Enterprises
https://www.headius.com
[email protected]<mailto:[email protected]>