- Notifications
You must be signed in to change notification settings - Fork 38.8k
Closed
Labels
theme: aotAn issue related to Ahead-of-time processingAn issue related to Ahead-of-time processingtype: bugA general bugA general bug
Milestone
Description
The shouldSkipMembers method uses type.getCanonicalName(), which may return null for anonymous, local and other types leading to NPE when calling startsWith.
The above happened when reading Java8 compiled code of com.mongodb.connection.ServerType.
Retrieving constructor arguments and registering them for binding failed because a synthetic constructor uses an anonymous class (com.mongodb.connection.ServerType$1).
synthetic ServerType(java.lang.String arg0, int arg1, com.mongodb.connection.ServerType$1 arg2) { // <init> //(Ljava/lang/String;ILcom/mongodb/connection/ServerType$1;)V <localVar:index=0 , name=this , desc=Lcom/mongodb/connection/ServerType;, sig=null, start=L0, end=L1> <localVar:index=1 , name=x0 , desc=Ljava/lang/String;, sig=null, start=L0, end=L1> <localVar:index=2 , name=x1 , desc=I, sig=null, start=L0, end=L1> <localVar:index=3 , name=x2 , desc=Lcom/mongodb/connection/ServerType$1;, sig=null, start=L0, end=L1> L0 { aload 0 // reference to self aload 1 // reference to arg0 iload 2 // reference to arg1 invokespecial com/mongodb/connection/ServerType.<init>(Ljava/lang/String;I)V return } L1 { } } ReflectionHints hints = new ReflectionHints(); BindingReflectionHintsRegistrar reflectionHintsRegistrar = new BindingReflectionHintsRegistrar(); Arrays.stream(com.mongodb.connection.ServerType.class.getDeclaredConstructors()).forEach(ctor -> { Arrays.stream(ctor.getParameterTypes()).forEach(type -> { reflectionHintsRegistrar.registerReflectionHints(hints, type); }); });Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because the return value of "java.lang.Class.getCanonicalName()" is null at org.springframework.aot.hint.BindingReflectionHintsRegistrar.shouldSkipMembers(BindingReflectionHintsRegistrar.java:74) at org.springframework.aot.hint.BindingReflectionHintsRegistrar.lambda$registerReflectionHints$0(BindingReflectionHintsRegistrar.java:87) at org.springframework.aot.hint.ReflectionHints.registerType(ReflectionHints.java:86) at org.springframework.aot.hint.ReflectionHints.registerType(ReflectionHints.java:109) at org.springframework.aot.hint.BindingReflectionHintsRegistrar.registerReflectionHints(BindingReflectionHintsRegistrar.java:86) at org.springframework.aot.hint.BindingReflectionHintsRegistrar.registerReflectionHints(BindingReflectionHintsRegistrar.java:65) sbrannen
Metadata
Metadata
Assignees
Labels
theme: aotAn issue related to Ahead-of-time processingAn issue related to Ahead-of-time processingtype: bugA general bugA general bug