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