in src/main/java/org/apache/bsf/util/event/generator/AdapterClassLoader.java [44:75]
public synchronized Class defineClass(final String name, final byte[] b) {
if ((c = getLoadedClass(name)) == null) {
final String tmpName = name.replace('/', '.');
try {
c = defineClass(tmpName, b, 0, b.length); // rgf, 2006-02-03
} catch (final NoClassDefFoundError e) // note "Error": Java thread would be killed otherwise!
{
// now try the Thread's current context class loader, but don't cache it
final ClassLoader tccl = Thread.currentThread().getContextClassLoader();
if (tccl != null) {
try {
final LocalThreadClassLoader ltcl = new LocalThreadClassLoader(tccl);
return ltcl.defineClass(tmpName, b);
} catch (final NoClassDefFoundError e1) // (NoClassDefFoundError e1)
{
logger.error("AdapterClassLoader: NoClassDefFoundError ERROR for class [" + tmpName + "]!");
throw e1; // rethrow error
}
} else {
logger.error("AdapterClassLoader: NoClassDefFoundError ERROR for class [" + tmpName + "] (info: Thread context class loader is 'null'.)!");
throw e; // rethrow error
}
}
put(name, c);
} else {
logger.error("AdapterClassLoader: " + c + " previously loaded. Can not redefine class.");
}
return c;
}