diff --git a/src/main/java/org/osgl/util/Generics.java b/src/main/java/org/osgl/util/Generics.java
index <HASH>..<HASH> 100644
--- a/src/main/java/org/osgl/util/Generics.java
+++ b/src/main/java/org/osgl/util/Generics.java
@@ -163,7 +163,9 @@ public class Generics {
                 }
             }
             superClass = (Class) pSuperType.getRawType();
-            if ($.eq(superClass, rootClass)) {
+            // We don't compare class directly to workaround some rare case when same class loaded by
+            // different class loaders
+            if ($.eq(superClass.getName(), rootClass.getName())) {
                 return nextList;
             }
             return typeParamImplementations(superClass, rootClass, nextList);
Generics.typeParamImplementations: handle the case with different classloader