내가 (내 자신의 클래스 로더에서)이 방법이 있습니다사용자 정의 자바 클래스 로더 및 내부 클래스
ZipInputStream in = new ZipInputStream(new FileInputStream(zip));
ZipEntry entry;
while ((entry = in.getNextEntry()) != null) {
if (!entry.isDirectory()) {
byte[] buffer = new byte[(int) entry.getSize()];
in.read(buffer);
if (!entry.getName().endsWith(".class"))
continue;
String name = entry.getName().replace(".class", "").replace("/", ".");
Class<?> cls = this.defineClass(name, buffer, 0, buffer.length);
this.resolveClass(cls);
}
}
로드하려고 메신저 우편은 다음과 같습니다
TestClass.class
TestClass$SomeOtherInnerClass.class
내 문제는 defineClass()가 TestClass $ SomeOtherInnerClass를로드하지 못한다는 것입니다. 이 클래스는 실제의 TestClass 전에로드되면 난이 얻을 :
java.lang.ClassFormatError: Wrong InnerClasses attribute length in class file TestClass
내가 해요 것이 있습니다 :
java.lang.NoClassDefFoundError: TestClass
나는 또한 먼저 TestClass.class을로드하지만이 오류가 메신저 시도 잘못하고있는거야?
내부 클래스를로드 할 수있는 동일한 문제가 있습니까? 내 클래스 A가 올바르게로드되었지만 클래스 A $ b1이 없습니다 ... 내부 클래스를로드하는 방법을 찾지 못했습니다. 진행? – jrey