diff --git a/platform/platform-impl/src/net/sf/cglib/proxy/AdvancedEnhancer.java b/platform/platform-impl/src/net/sf/cglib/proxy/AdvancedEnhancer.java index a2f21c3d0018..410c7b47c2a1 100644 --- a/platform/platform-impl/src/net/sf/cglib/proxy/AdvancedEnhancer.java +++ b/platform/platform-impl/src/net/sf/cglib/proxy/AdvancedEnhancer.java @@ -366,6 +366,7 @@ public class AdvancedEnhancer extends AbstractClassGenerator protected ClassLoader getDefaultClassLoader() { int maxIndex = -1; ClassLoader bestLoader = null; + ClassLoader nonPluginLoader = null; if (interfaces != null && interfaces.length > 0) { for (final Class anInterface : interfaces) { final ClassLoader loader = anInterface.getClassLoader(); @@ -376,6 +377,9 @@ public class AdvancedEnhancer extends AbstractClassGenerator bestLoader = loader; } } + else if (nonPluginLoader == null) { + nonPluginLoader = loader; + } } } ClassLoader superLoader = null; @@ -387,7 +391,7 @@ public class AdvancedEnhancer extends AbstractClassGenerator } } if (bestLoader != null) return bestLoader; - return superLoader; + return superLoader == null ? nonPluginLoader : superLoader; } private static Signature rename(Signature sig, int index) {