私は次のリンクから例をたどっていました:
http://www.javaworld.com/javaworld/jw-10-1996/jw-10-indepth.html?page=1 そしてこれは私が得ている出力です:
このプログラムはSimpleClassLoaderを使用します。 >>>>>>ロードクラス:TestClass >>>>>>システムクラスではありません。 >>>>>>TestClassの実装を取得する ファイルが正常に読み取られました スレッド"main"の例外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ディレクトリに配置しました。私のクラスはパッケージの下にあります:ahaしたがって、ファイルTestClass.implは正常に読み取られますが、結果の間に何かが発生します= defineClass(classData、0、classData.length); このメソッドが非推奨になっていることは知っていますが、それでも??