- Notifications
You must be signed in to change notification settings - Fork 41.6k
Closed
Description
If you process an app that has Thymleaf, but not spring-web
, it fails as follows:
Exception in thread "main" java.lang.TypeNotPresentException: Type org.springframework.http.MediaType not present at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:117) at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125) at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49) at java.base/sun.reflect.generics.visitor.Reifier.reifyTypeArguments(Reifier.java:68) at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:138) at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49) at java.base/sun.reflect.generics.repository.ConstructorRepository.computeParameterTypes(ConstructorRepository.java:111) at java.base/sun.reflect.generics.repository.ConstructorRepository.getParameterTypes(ConstructorRepository.java:87) at java.base/java.lang.reflect.Executable.getGenericParameterTypes(Executable.java:298) at java.base/java.lang.reflect.Method.getGenericParameterTypes(Method.java:334) at org.springframework.core.MethodParameter.getGenericParameterType(MethodParameter.java:519) at org.springframework.core.SerializableTypeWrapper$MethodParameterTypeProvider.getType(SerializableTypeWrapper.java:297) at org.springframework.core.SerializableTypeWrapper.forTypeProvider(SerializableTypeWrapper.java:106) at org.springframework.core.ResolvableType.forType(ResolvableType.java:1530) at org.springframework.core.ResolvableType.forMethodParameter(ResolvableType.java:1419) at org.springframework.boot.context.properties.bind.JavaBeanBinder$BeanProperty.getType(JavaBeanBinder.java:371) at org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar$Processor.lambda$handleJavaBeanProperties$1(BindableRuntimeHintsRegistrar.java:215) at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) at org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar$Processor.handleJavaBeanProperties(BindableRuntimeHintsRegistrar.java:206) at org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar$Processor.process(BindableRuntimeHintsRegistrar.java:172) at org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar$Processor.processNested(BindableRuntimeHintsRegistrar.java:240) at org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar$Processor.handleProperty(BindableRuntimeHintsRegistrar.java:235) at org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar$Processor.lambda$handleJavaBeanProperties$1(BindableRuntimeHintsRegistrar.java:215) at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) at org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar$Processor.handleJavaBeanProperties(BindableRuntimeHintsRegistrar.java:206) at org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar$Processor.process(BindableRuntimeHintsRegistrar.java:172) at org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar.registerHints(BindableRuntimeHintsRegistrar.java:92) at org.springframework.boot.context.properties.ConfigurationPropertiesBeanFactoryInitializationAotProcessor$ConfigurationPropertiesReflectionHintsContribution.applyTo(ConfigurationPropertiesBeanFactoryInitializationAotProcessor.java:74) 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:82) at org.springframework.boot.SpringApplicationAotProcessor.main(SpringApplicationAotProcessor.java:80) Caused by: java.lang.ClassNotFoundException: org.springframework.http.MediaType at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:467) at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114) ... 36 more
If a type cannot be resolved for whatever reason, we should handle that gracefully and continue.
Metadata
Metadata
Assignees
Labels
type: bugA general bugA general bug