@@ -257,6 +257,16 @@ protected AnnotationMetadata doProcessConfigurationClass(
257257 Class <?> clazz = ((StandardAnnotationMetadata ) metadata ).getIntrospectedClass ();
258258 return new StandardAnnotationMetadata (clazz .getSuperclass (), true );
259259 }
260+ else if (superclass .startsWith ("java" )) {
261+ // never load core JDK classes via ASM, in particular not java.lang.Object!
262+ try {
263+ return new StandardAnnotationMetadata (
264+ this .resourceLoader .getClassLoader ().loadClass (superclass ), true );
265+ }
266+ catch (ClassNotFoundException ex ) {
267+ throw new IllegalStateException (ex );
268+ }
269+ }
260270 else {
261271 MetadataReader reader = this .metadataReaderFactory .getMetadataReader (superclass );
262272 return reader .getAnnotationMetadata ();
@@ -313,7 +323,8 @@ private void processImport(ConfigurationClass configClass, String[] classesToImp
313323 if (new AssignableTypeFilter (ImportSelector .class ).match (reader , this .metadataReaderFactory )) {
314324 // the candidate class is an ImportSelector -> delegate to it to determine imports
315325 try {
316- ImportSelector selector = BeanUtils .instantiateClass (Class .forName (candidate ), ImportSelector .class );
326+ ImportSelector selector = BeanUtils .instantiateClass (
327+ this .resourceLoader .getClassLoader ().loadClass (candidate ), ImportSelector .class );
317328 processImport (configClass , selector .selectImports (importingClassMetadata ), false );
318329 }
319330 catch (ClassNotFoundException ex ) {
@@ -323,7 +334,8 @@ private void processImport(ConfigurationClass configClass, String[] classesToImp
323334 else if (new AssignableTypeFilter (ImportBeanDefinitionRegistrar .class ).match (reader , metadataReaderFactory )) {
324335 // the candidate class is an ImportBeanDefinitionRegistrar -> delegate to it to register additional bean definitions
325336 try {
326- ImportBeanDefinitionRegistrar registrar = BeanUtils .instantiateClass (Class .forName (candidate ), ImportBeanDefinitionRegistrar .class );
337+ ImportBeanDefinitionRegistrar registrar = BeanUtils .instantiateClass (
338+ this .resourceLoader .getClassLoader ().loadClass (candidate ), ImportBeanDefinitionRegistrar .class );
327339 invokeAwareMethods (registrar );
328340 registrar .registerBeanDefinitions (importingClassMetadata , registry );
329341 }
0 commit comments