我有這樣的方法(在我自己的類加載器),從拉鍊加載類:定製的Java類加載器和內部類
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.NoClassDefFoundError: TestClass
我也試着先加載TestClass.class但隨後即時收到此錯誤:
java.lang.ClassFormatError: Wrong InnerClasses attribute length in class file TestClass
是否有什麼我做錯了?
我有同樣的問題,我如何加載內部類?,我的類A加載正確,但我的類A $ B1不...沒有找到一種方法來加載內部類...你有任何進展? – jrey 2011-04-13 05:32:54