Index: openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java =================================================================== --- openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java (revision 564338) +++ openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java (working copy) @@ -50,12 +50,9 @@ if (l2 == null) return l1; - for (ClassLoader p = (ClassLoader) AccessController.doPrivileged( - J2DoPrivHelper.getParentAction(l1)); p != null; - p = (ClassLoader) AccessController.doPrivileged( - J2DoPrivHelper.getParentAction(p))) - if (p == l2) - return l1; + if(canLoad(l1, c2)) { + return l1; + } return l2; } @@ -72,4 +69,22 @@ throw new GeneralException(bc.getName()).setCause(t); } } + + /** + * Return true if the given loader will load the same version of a given + * class. + * + * @param loader Classloader to use. + * @param clazz Expected class. + * @return true if loader.load(clazz.getName()) == clazz. Otherwise false. + */ + private static boolean canLoad(ClassLoader loader, Class clazz) { + Class loaded = null; + try { + loaded = loader.loadClass(clazz.getName()); + } catch (ClassNotFoundException e) { + + } + return clazz == loaded; + } }