diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java index 0632cd3572..02cf62cb13 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java @@ -566,11 +566,11 @@ public class ReferenceConfig extends ReferenceConfigBase { interfaceClass = GenericService.class; } else { try { - if (getInterfaceClassLoader() != null) { + if (getInterfaceClassLoader() != null && (interfaceClass == null || interfaceClass.getClassLoader() != getInterfaceClassLoader())) { interfaceClass = Class.forName(interfaceName, true, getInterfaceClassLoader()); - } else { + } else if (interfaceClass == null) { interfaceClass = Class.forName(interfaceName, true, Thread.currentThread() - .getContextClassLoader()); + .getContextClassLoader()); } } catch (ClassNotFoundException e) { throw new IllegalStateException(e.getMessage(), e);