演習の一環として、リモートクラスローダーを作成する必要がありました。サーバーからクラスをダウンロードし、defineClassを使用してロードします。
私がしたことは次のようなものでした:
in=new ObjectInputStream(s.getInputStream());
Object o = in.readObject();
return defineClass(className,o.toString().getBytes(), 0, o.toString().length());
そして、私はjava.lang.ClassFormatError: Incompatible magic value
しかし、私がこれを書いたとき
in=new ObjectInputStream(s.getInputStream());
byte[] classData=(byte[])in.readObject();
return defineClass(className,classData, 0, classData.length);
期待通りに動作しました。
何故ですか?