Skip to content

NullPointerException during AOT processing when MongoDB domain model #4958

Open
@ckdgus08

Description

@ckdgus08

Hello,

First of all, thank you for your continued work on the Spring ecosystem.
I encountered a NullPointerException while using Spring Boot 3.4.5 with AOT processing enabled, and I'd like to report a potential bug.

Based on my debugging, it seems that a NullPointerException occurs when using Jackson with Mongo data models annotated with @ Document.

If this issue is not already being worked on, I would like to submit a pull request with a fix.

Environment

  • Spring Boot: 3.4.5
  • Spring Data MongoDB
  • GraalVM / Native AOT enabled

Stack Trace

Exception in thread "main" org.springframework.beans.factory.aot.AotBeanProcessingException: Error processing bean with name 'mongoManagedTypes' defined in class path resource [org/springframework/boot/autoconfigure/data/mongo/MongoDataConfiguration.class]: failed to generate code for bean definition
	at org.springframework.beans.factory.aot.BeanRegistrationsAotContribution$BeanDefinitionsRegistrationGenerator.lambda$generateRegisterBeanDefinitionMethods$2(BeanRegistrationsAotContribution.java:217)
	at java.base/java.lang.Iterable.forEach(Iterable.java:75)
	at org.springframework.beans.factory.aot.BeanRegistrationsAotContribution$BeanDefinitionsRegistrationGenerator.generateRegisterBeanDefinitionMethods(BeanRegistrationsAotContribution.java:207)
	at org.springframework.beans.factory.aot.BeanRegistrationsAotContribution$BeanDefinitionsRegistrationGenerator.lambda$generateSliceMethod$1(BeanRegistrationsAotContribution.java:198)
	at org.springframework.aot.generate.GeneratedMethod.<init>(GeneratedMethod.java:54)
	at org.springframework.aot.generate.GeneratedMethods.add(GeneratedMethods.java:112)
	at org.springframework.aot.generate.GeneratedMethods.add(GeneratedMethods.java:89)
	at org.springframework.beans.factory.aot.BeanRegistrationsAotContribution$BeanDefinitionsRegistrationGenerator.generateSliceMethod(BeanRegistrationsAotContribution.java:194)
	at org.springframework.beans.factory.aot.BeanRegistrationsAotContribution$BeanDefinitionsRegistrationGenerator.lambda$generateRegisterBeanDefinitionsMethod$0(BeanRegistrationsAotContribution.java:181)
	at org.springframework.aot.generate.GeneratedMethod.<init>(GeneratedMethod.java:54)
	at org.springframework.aot.generate.GeneratedMethods.add(GeneratedMethods.java:112)
	at org.springframework.aot.generate.GeneratedMethods.add(GeneratedMethods.java:89)
	at org.springframework.beans.factory.aot.BeanRegistrationsAotContribution$BeanDefinitionsRegistrationGenerator.generateRegisterBeanDefinitionsMethod(BeanRegistrationsAotContribution.java:166)
	at org.springframework.beans.factory.aot.BeanRegistrationsAotContribution.applyTo(BeanRegistrationsAotContribution.java:77)
	at org.springframework.context.aot.BeanFactoryInitializationAotContributions.applyTo(BeanFactoryInitializationAotContributions.java:96)
	at org.springframework.context.aot.ApplicationContextAotGenerator.lambda$processAheadOfTime$0(ApplicationContextAotGenerator.java:58)
	at org.springframework.context.aot.ApplicationContextAotGenerator.withCglibClassHandler(ApplicationContextAotGenerator.java:67)
	at org.springframework.context.aot.ApplicationContextAotGenerator.processAheadOfTime(ApplicationContextAotGenerator.java:53)
	at org.springframework.context.aot.ContextAotProcessor.performAotProcessing(ContextAotProcessor.java:106)
	at org.springframework.context.aot.ContextAotProcessor.doProcess(ContextAotProcessor.java:84)
	at org.springframework.context.aot.ContextAotProcessor.doProcess(ContextAotProcessor.java:49)
	at org.springframework.context.aot.AbstractAotProcessor.process(AbstractAotProcessor.java:83)
	at org.springframework.boot.SpringApplicationAotProcessor.main(SpringApplicationAotProcessor.java:80)
Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.Package.getName()" because the return value of "java.lang.Class.getPackage()" is null
Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.Package.getName()" because the return value of "java.lang.Class.getPackage()" is null

	at org.springframework.data.util.QTypeContributor.getQueryClassName(QTypeContributor.java:83)
	at org.springframework.data.util.QTypeContributor.contributeEntityPath(QTypeContributor.java:44)
	at org.springframework.data.aot.ManagedTypesBeanRegistrationAotProcessor.contributeType(ManagedTypesBeanRegistrationAotProcessor.java:140)
	at org.springframework.data.mongodb.aot.MongoManagedTypesBeanRegistrationAotProcessor.contributeType(MongoManagedTypesBeanRegistrationAotProcessor.java:53)
	at org.springframework.data.aot.ManagedTypesRegistrationAotContribution.lambda$applyTo$0(ManagedTypesRegistrationAotContribution.java:96)
	at org.springframework.data.util.TypeCollector.processType(TypeCollector.java:103)
	at org.springframework.data.util.TypeCollector.processType(TypeCollector.java:117)
	at org.springframework.data.util.TypeCollector.processType(TypeCollector.java:117)
	at org.springframework.data.util.TypeCollector.processType(TypeCollector.java:117)
	at org.springframework.data.util.TypeCollector.processType(TypeCollector.java:117)
	at org.springframework.data.util.TypeCollector.processType(TypeCollector.java:117)
	at org.springframework.data.util.TypeCollector.processType(TypeCollector.java:117)
	at org.springframework.data.util.TypeCollector.processType(TypeCollector.java:117)
	at org.springframework.data.util.TypeCollector.processType(TypeCollector.java:117)
	at org.springframework.data.util.TypeCollector.processType(TypeCollector.java:117)
	at org.springframework.data.util.TypeCollector.processType(TypeCollector.java:117)
	at org.springframework.data.util.TypeCollector.process(TypeCollector.java:90)
	at org.springframework.data.util.TypeCollector$ReachableTypes.lambda$forEach$0(TypeCollector.java:229)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at org.springframework.data.util.TypeCollector$ReachableTypes.forEach(TypeCollector.java:229)
	at org.springframework.data.aot.ManagedTypesRegistrationAotContribution.applyTo(ManagedTypesRegistrationAotContribution.java:96)
	at org.springframework.beans.factory.aot.BeanDefinitionMethodGenerator.lambda$generateBeanDefinitionMethod$2(BeanDefinitionMethodGenerator.java:165)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at org.springframework.beans.factory.aot.BeanDefinitionMethodGenerator.generateBeanDefinitionMethod(BeanDefinitionMethodGenerator.java:165)
	at org.springframework.beans.factory.aot.BeanDefinitionMethodGenerator.generateBeanDefinitionMethod(BeanDefinitionMethodGenerator.java:89)
	at org.springframework.beans.factory.aot.BeanRegistrationsAotContribution$BeanDefinitionsRegistrationGenerator.generateBeanRegistration(BeanRegistrationsAotContribution.java:226)
	at org.springframework.beans.factory.aot.BeanRegistrationsAotContribution$BeanDefinitionsRegistrationGenerator.lambda$generateRegisterBeanDefinitionMethods$2(BeanRegistrationsAotContribution.java:209)
	... 22 more

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions