Я следовал примеру из следующей ссылки:
http://www.javaworld.com/javaworld/jw-10-1996/jw-10-indepth.html?page=1, и вот что я получаю:
This program will use SimpleClassLoader. >>>>>> Load class : TestClass >>>>>> Not a system class. >>>>>> Fetching the implementation of TestClass file was read successfully Exception in thread "main" java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(Unknown Source) at java.lang.ClassLoader.defineClass(Unknown Source) at java.lang.ClassLoader.defineClass(Unknown Source) at aha.SimpleClassLoader.loadClass(SimpleClassLoader.java:80) at aha.SimpleClassLoader.loadClass(SimpleClassLoader.java:42) at aha.Example.main(Example.java:11)
вот пример моего метода, который читает файл:
private byte getClassImplFromDataBase(String className)[] {
System.out.println(" >>>>>> Fetching the implementation of "+className);
byte result[];
try {
FileInputStream fi = new FileInputStream("C:/delete/"+className+".impl");
result = new byte[fi.available()];
fi.read(result);
System.out.println("file was read succesfullyl");
return result;
} catch (Exception e) {
/*
* If we caught an exception, either the class wasnt found or it
* was unreadable by our process.
*/
return null;
}
}
Я поместил файл TestClass.impl в каталог C: / delete. Мои классы находятся в пакете: aha Итак, файл TestClass.impl читается нормально, но что-то происходит во время результата = defineClass (classData, 0, classData.length); Я знаю, что этот метод устарел, но все же ??
.available()
работает таким образом для файлов размером менее 2 ГБ, но его работа не гарантируется. Это не работает ни с одним другим типом потока. - person Peter Lawrey   schedule 13.06.2011