diff --git a/spring-beans/src/main/java/org/springframework/beans/BeanUtils.java b/spring-beans/src/main/java/org/springframework/beans/BeanUtils.java index 77aff7ffe08..d908dbde63a 100644 --- a/spring-beans/src/main/java/org/springframework/beans/BeanUtils.java +++ b/spring-beans/src/main/java/org/springframework/beans/BeanUtils.java @@ -142,19 +142,20 @@ public abstract class BeanUtils { if (clazz.isInterface()) { throw new BeanInstantiationException(clazz, "Specified class is an interface"); } + Constructor ctor; try { - return instantiateClass(clazz.getDeclaredConstructor()); + ctor = clazz.getDeclaredConstructor(); } catch (NoSuchMethodException ex) { - Constructor ctor = findPrimaryConstructor(clazz); - if (ctor != null) { - return instantiateClass(ctor); + ctor = findPrimaryConstructor(clazz); + if (ctor == null) { + throw new BeanInstantiationException(clazz, "No default constructor found", ex); } - throw new BeanInstantiationException(clazz, "No default constructor found", ex); } catch (LinkageError err) { throw new BeanInstantiationException(clazz, "Unresolvable class definition", err); } + return instantiateClass(ctor); } /**