private static final Logger LOGGER = LoggerFactory.getLogger(RuntimeModule.class);
public static final boolean VALIDATE_CLASS_NAMES = true;
- public static final boolean TRACE_CLASS_CREATION = true;
+ public static final boolean TRACE_CLASS_CREATION = false;
Module module;
ModuleClassLoader classLoader;
private Class<?> getClass(String name) throws ClassNotFoundException {
- System.out.println(moduleName + ":getClass " + name);
+ Class<?> clazz = findLoadedClass(name);
+ if(clazz != null)
+ return clazz;
// If the class is not generated from SCL, use parent class loader
if(!name.startsWith(SCL_PACKAGE_PREFIX)) {
ClassVisitor cv1 = new ClassVisitor(ASM5) {};
ClassVisitor cv = new ClassRemapper(cv1, m);
cr.accept(cv, ClassReader.SKIP_DEBUG);
- System.err.println(className + " refs: " + referencedClasses);
return referencedClasses;
} catch (Exception e) {
e.printStackTrace();
return null;
}
- public void loadReferences() {
- ConcreteModule cm = (ConcreteModule)module;
- try {
- for(String className : cm.getClasses().keySet()) {
- Set<String> refs = classReferences(className);
- for(String s : refs) {
- String internalName = s.replace('/', '.');
- try {
- classLoader.loadClass(internalName);
- } catch (Throwable e) {
- e.printStackTrace();
+ public void loadClasses() {
+ if(module instanceof ConcreteModule) {
+ ConcreteModule cm = (ConcreteModule)module;
+ try {
+ for(String className : cm.getClasses().keySet()) {
+ Set<String> refs = classReferences(className);
+ for(String s : refs) {
+ String internalName = s.replace('/', '.');
+ try {
+ classLoader.getClass(internalName);
+ } catch (Throwable e) {
+ e.printStackTrace();
+ }
}
}
+ } catch (Throwable e) {
+ e.printStackTrace();
}
- } catch (Throwable e) {
- e.printStackTrace();
}
}