java如何将byte[]存储形式的Class加载到JVM中呢?
下文笔者将一个.class文件转换为byte[]之后,加载到JVM中的方法分享,如下所示
实现思路: 使用defineClass方法即可将class加载到JVM中例
public static class ByteClassLoader extends URLClassLoader { private final Map<String, byte[]> extraClassDefs; public ByteClassLoader(URL[] urls, ClassLoader parent, Map<String, byte[]> extraClassDefs) { super(urls, parent); this.extraClassDefs = new HashMap<String, byte[]>(extraClassDefs); } @Override protected Class<?> findClass(final String name) throws ClassNotFoundException { byte[] classBytes = this.extraClassDefs.remove(name); if (classBytes != null) { return defineClass(name, classBytes, 0, classBytes.length); } return super.findClass(name); } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。