0
我有一个从Map<String, byte[]>
加载类的CustomClassLoader
。我正在加载的类取决于其他的卸载类。我已经包含在在CustomClassLoader
之前发起的UrlClassLoader
说类的jar文件,但是当CustomClassLoader
试图加载具有外部进口(在URLClassLoader的一个jar文件)抛出一个异常类:跨类加载器的类加载
Exception in thread "main" java.lang.NoClassDefFoundError: external/class/in/urlclassloader/ClassImportedByLoadedClass
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.lang.ClassLoader.defineClass(ClassLoader.java:642)
at CustomClassLoader.defineClass(EncryptedByteArrayClassLoader.java:35)
我需要一些方法来或者:
一)所有负载是在URLClassLoader
或
b中的类)有一些方法来设置URLClassLoader的作为正在从内存(而不是我的CustomClassLoader)加载类的默认的ClassLoader
线35:
public Class<?> defineClass(String name, byte[] bytes) {
return super.defineClass(name, bytes, 0, bytes.length);
}
我已经尝试设置上下文ClassLoader,如:
Thread.currentThread().setContextClassLoader(jarLoader);
jarLoader是URLClassLoader
。
有什么办法来完成我想要做什么?
完美工作,谢谢! – user1497561