Public lookup and unreflect cause a NPE

Rémi Forax forax at univ-mlv.fr
Thu May 7 07:57:24 PDT 2009


Hi all,
The current implementation (the one of the tl repository) generates a NPE
Method method = ...
MethodHandle methodHandle = 
MethodHandles.Lookup.PUBLIC_LOOKUP.unreflect(method);

cause a NPE:
Exception in thread "main" java.lang.NullPointerException
    at sun.dyn.DirectMethodHandle.<init>(DirectMethodHandle.java:49)
    at sun.dyn.MethodHandleImpl.findMethod(MethodHandleImpl.java:156)
    at java.dyn.MethodHandles.unreflectImpl(MethodHandles.java:431)
    at java.dyn.MethodHandles$Lookup.unreflect(MethodHandles.java:307)
    at fr.umlv.indy.visitor.AbstractVisitor.<init>(AbstractVisitor.java:33)
    at fr.umlv.indy.visitor.test.Main$1.<init>(Main.java:15)
    at fr.umlv.indy.visitor.test.Main.main(Main.java:15)

I don't fully understand why this line is needed but
it can be easily solve by using == instead of equals (on Class ??)
if (lookupClass.equals(Access.class))  lookupClass = null;

is replaced by:
if (lookupClass==Access.class)  lookupClass = null;

Rémi



More information about the mlvm-dev mailing list