How to load a ClassNode as a Class
suggest change/** * Load a class by from a ClassNode * * @param cn * ClassNode to load * @return */ public static Class<?> load(ClassNode cn) { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES); return new ClassDefiner(ClassLoader.getSystemClassLoader()).get(cn.name.replace("/", "."), cw.toByteArray()); } /** * Classloader that loads a class from bytes. */ static class ClassDefiner extends ClassLoader { public ClassDefiner(ClassLoader parent) { super(parent); } public Class<?> get(String name, byte[] bytes) { Class<?> c = defineClass(name, bytes, 0, bytes.length); resolveClass(c); return c; } }
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents