[Nestmates] Error message when MemberOfNest is not found
David Holmes
david.holmes at oracle.com
Tue Aug 22 02:41:17 UTC 2017
Hi Remi,
On 22/08/2017 12:11 AM, Remi Forax wrote:
> While testing the implementation of nestmates in ASM,
> i've mess up with one of my test and insert the wrong name in MemberOfNest.
>
> So it get a ClassNotFoundError, that's Ok, but i get an unexpected stacktrace,
> it reference the first line of the main(), which is disturbing.
>
> Exception in thread "main" java.lang.NoClassDefFoundError: $A
> at Foo.main(Foo.java:15)
> Caused by: java.lang.ClassNotFoundException: $A
> at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
> at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:495)
> ... 1 more
>
> Is it normal ?
In the existing code nestmate validation occurs at link-time, so if your
class needed to be linked by the start of main then it is as expected.
I'm currently working on a change to only do nestmate validation at the
time an actual nestmate access is needed. That should put the exception
at a less surprising place. This allows for more cases where the
nest-top, I mean nest-host, class may not be present and is not needed.
> Is there a way to improve the error message ?
There is an action item to look at the exceptions that can come from
nestmate validation and ensure we throw reasonable exceptions at
reasonable places with reasonable error messages. Currently
LinkageErrors just propagate and the NCDFE messages can be somewhat
unhelpful.
This is all WIP.
Thanks,
David
> Rémi
>
More information about the valhalla-dev
mailing list