我正在关注以下链接中的示例:
http://www.javaworld.com/javaworld/jw-10-1996/jw-10-indepth.html?page=1 这是我得到的输出:
该程序将使用 SimpleClassLoader。 >>>>>> 加载类:TestClass >>>>>> 不是系统类。 >>>>>> 获取 TestClass 的实现 文件被成功读取 线程“主”java.lang.ClassFormatError 中的异常:类文件中的魔法值 1768779887 不兼容 在 java.lang.ClassLoader.defineClass1(本机方法) 在 java.lang.ClassLoader.defineClassCond(未知来源) 在 java.lang.ClassLoader.defineClass(未知来源) 在 java.lang.ClassLoader.defineClass(未知来源) 在 aha.SimpleClassLoader.loadClass(SimpleClassLoader.java:80) 在 aha.SimpleClassLoader.loadClass(SimpleClassLoader.java:42) 在 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 目录下。我的类位于包下:啊哈所以文件 TestClass.impl 读取正常,但是在 result = defineClass(classData, 0, classData.length); 期间发生了一些事情;我知道这种方法已被弃用但仍然存在??