ASM ClassWriter uses application ClassLoader for its getCommonSuperClass check
Issue: SPR-13695
This commit is contained in:
@@ -1676,7 +1676,8 @@ public class ClassWriter extends ClassVisitor {
|
||||
*/
|
||||
protected String getCommonSuperClass(final String type1, final String type2) {
|
||||
Class<?> c, d;
|
||||
ClassLoader classLoader = getClass().getClassLoader();
|
||||
// SPRING PATCH: PREFER APPLICATION CLASSLOADER
|
||||
ClassLoader classLoader = getClassLoader();
|
||||
try {
|
||||
c = Class.forName(type1.replace('/', '.'), false, classLoader);
|
||||
d = Class.forName(type2.replace('/', '.'), false, classLoader);
|
||||
@@ -1699,6 +1700,17 @@ public class ClassWriter extends ClassVisitor {
|
||||
}
|
||||
}
|
||||
|
||||
// SPRING PATCH: PREFER THREAD CONTEXT CLASSLOADER FOR APPLICATION CLASSES
|
||||
protected ClassLoader getClassLoader() {
|
||||
ClassLoader classLoader = null;
|
||||
try {
|
||||
classLoader = Thread.currentThread().getContextClassLoader();
|
||||
} catch (Throwable ex) {
|
||||
// Cannot access thread context ClassLoader - falling back...
|
||||
}
|
||||
return (classLoader != null ? classLoader : getClass().getClassLoader());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the constant pool's hash table item which is equal to the given
|
||||
* item.
|
||||
|
||||
Reference in New Issue
Block a user