@@ -252,6 +252,16 @@ protected AnnotationMetadata doProcessConfigurationClass(
252252 Class <?> clazz = ((StandardAnnotationMetadata ) metadata ).getIntrospectedClass ();
253253 return new StandardAnnotationMetadata (clazz .getSuperclass (), true );
254254 }
255+ else if (superclass .startsWith ("java" )) {
256+ // never load core JDK classes via ASM, in particular not java.lang.Object!
257+ try {
258+ return new StandardAnnotationMetadata (
259+ this .resourceLoader .getClassLoader ().loadClass (superclass ), true );
260+ }
261+ catch (ClassNotFoundException ex ) {
262+ throw new IllegalStateException (ex );
263+ }
264+ }
255265 else {
256266 MetadataReader reader = this .metadataReaderFactory .getMetadataReader (superclass );
257267 return reader .getAnnotationMetadata ();
@@ -317,7 +327,8 @@ private void processImport(ConfigurationClass configClass, String[] classesToImp
317327 if (new AssignableTypeFilter (ImportSelector .class ).match (reader , this .metadataReaderFactory )) {
318328 // the candidate class is an ImportSelector -> delegate to it to determine imports
319329 try {
320- ImportSelector selector = BeanUtils .instantiateClass (Class .forName (candidate ), ImportSelector .class );
330+ ImportSelector selector = BeanUtils .instantiateClass (
331+ this .resourceLoader .getClassLoader ().loadClass (candidate ), ImportSelector .class );
321332 processImport (configClass , selector .selectImports (importingClassMetadata ), false );
322333 }
323334 catch (ClassNotFoundException ex ) {
@@ -327,7 +338,8 @@ private void processImport(ConfigurationClass configClass, String[] classesToImp
327338 else if (new AssignableTypeFilter (ImportBeanDefinitionRegistrar .class ).match (reader , metadataReaderFactory )) {
328339 // the candidate class is an ImportBeanDefinitionRegistrar -> delegate to it to register additional bean definitions
329340 try {
330- ImportBeanDefinitionRegistrar registrar = BeanUtils .instantiateClass (Class .forName (candidate ), ImportBeanDefinitionRegistrar .class );
341+ ImportBeanDefinitionRegistrar registrar = BeanUtils .instantiateClass (
342+ this .resourceLoader .getClassLoader ().loadClass (candidate ), ImportBeanDefinitionRegistrar .class );
331343 registrar .registerBeanDefinitions (importingClassMetadata , registry );
332344 }
333345 catch (ClassNotFoundException ex ) {
0 commit comments